我可以在Laravel查询中使用`when`和`whereHas`吗?

时间:2017-06-28 18:18:18

标签: php laravel laravel-5

我想在Laravel查询中添加whereHas,但前提是变量为true。我正在尝试下面没有错误,但在它应该的时候不会返回任何内容。

$assets = Asset::with('media')
            ->when($category, function ($q) use ($category) {
                return $q->whereHas('category', function ($query) use ($category) {
                    $query->whereId($category);
                });
            })->offset($offset)->limit($limit)->get();

如果$category为真,则不返回任何内容。如果$category为false,则返回all。它没有when子句。

1 个答案:

答案 0 :(得分:1)

这是我的代码,它正在运行:

return App\Car::with(['user'])
            ->when($_GET['area']>'', function ($query)  
                { $query-> whereHas('user', function($query) { $query->where('area_id', $_GET['area']); }  ); })->get();