在laravel中使用whereHas时是否必须编写return关键字。
例如返回$ query-> where('status',1);
$posts = App\Post::whereHas('comments', function ($query) {
$query->whereHas('content', function ($query){
$query->where('status', 1);
});
})->get();
我们是否需要在每个查询回调中编写return?
答案 0 :(得分:2)
否,您正在通过调用$query->where('status', 1);
来修改传递给闭包的查询构建器实例。由于对象是通过引用传递的,并且where()
会使该实例发生突变,因此无需返回任何内容。
答案 1 :(得分:0)
没有必要。您也可以使用具有嵌套关系的whereHas。 示例:
$posts = App\Post::whereHas('comments.content', function ($query) {
$query->where('status', 1);
})->get();
答案 2 :(得分:0)
不。因为每个函数中都有相同的对象(并对其进行修改)。无需返回。