我尝试使用ORM关系加入两个表post
和comment
,
$posts = Post::with('comments')->get();
使用with
连接表时,如何在注释中使用条件?
我可以使用whereHas like
$posts = Post::whereHas('comments', function ($query) {
if(isset($_GET['title']))
$query->where('title', $_GET['title']);
})->get();
但是当我使用whereHas
时,我不会在结果中没有任何评论的情况下收到帖子
基本上我想在右表中使用带有条件的左连接
答案 0 :(得分:2)
您可以将闭包传递给with()
方法,如下所示:
$posts = Post::with(['comments' => function($q) {
$q->where('column', '=', 'value'); // Put conditions here
}])->get();
希望这有帮助!
答案 1 :(得分:0)
您需要使用闭包:
$title = $_GET['title'];
$posts = Post::whereHas('comments', function ($query) use ($title) {
if(!empty($title)) {
$query->where('title', $_GET['title']);
}
})->get();
参考: