Laravel在连接外键时有何不为空然后在哪里应用

abhig10

这是我用雄辩的withwhereHas功能的查询

$list = $list->with([
    'site' => function($query) {
        $query->select('site_id', 'name')->where('status', 1);
    },
    'certification' => function($query) {
        $query->select('certification_id', 'name')->where('status', 1);
    },
])->whereHas('site', function($query) {
    $query->where('status', 1);
})
->whereHas('certification', function($query) {
    $query->where('status', 1);
});
->where('status', '1')

认证和站点与列表表具有多对一关系。

但是,直到列表表中的所有项目都带有为止,上述代码才能正常工作certification_id但是有时certification_id可以Null

我如何编写此查询以便whereHas仅在certification_id不为null时实施以便给出所有结果where certification_id is Null+给出所有结果,其中certification_id is not null and certifications.status = 1

列表中的关系为

public function certification()
{
    return $this->belongsTo('App\Certification', 'certification_id', 'certification_id');
}
abhig10

浪费了4个小时,在我发布此问题时点击了它。我将whereHas嵌套certification_id is null在一个where块中,然后点击了!

$list = $list->with([
    'site' => function($query) {
        $query->select('site_id', 'name')->where('status', 1);
    },
    'certification' => function($query) {
        $query->select('certification_id', 'name')->where('status', 1);
    }
])->whereHas('site', function($query) {
    $query->where('status', 1);
})
->where(function($query) {
    $query->whereHas('certification', function($query) {
        $query->where('status', 1);
    })->orWhereNull('certification_id');
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章