查询回调中的返回关键字

时间:2019-03-25 19:59:56

标签: laravel eloquent

在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?

3 个答案:

答案 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)

不。因为每个函数中都有相同的对象(并对其进行修改)。无需返回。