我使用查询获取用户拥有的模型,但是每个用户仅返回1个模型。如何获得全部?如果我设置$count=3
,我应该在组中收到3个或更多模型,但仅返回第一行
$items->where(/*.....*/)
->groupBy('user_id')
->havingRaw("COUNT(*) >= {$count}")->get()
更新 我解决了我创建了一个单独的函数来准备查询,并使用了2次。 我认为这可能是一个不正确的解决方案,但是它有效
$items = Items::query();
$this->prepareQuery($request, $items)
$items->whereHas('user', function ($q) use ($count, $request){
$q->whereHas('items', function ($query) use ($request){
$this->prepareQuery($request, $query);
}, '>=', $count);
})
->paginate(4);
答案 0 :(得分:0)
如果您已建立关系,则可以简单地致电:
$model->models()
$model
是您想要列表的模型。
models()
是两个项目之间关系的名称。
例如,一个帖子可能有很多评论。您可以致电$post->comments()
获取帖子评论列表。
您也可以用一些雄辩的魔术直接从数据库中查询它。
Post::with('comments')->where(/*....*/)->get();
编辑:
您可以检查模型是否具有X个相关模型,像这样。
Post::has('comments', '>=', 3)->where(/*...*/)->get();
答案 1 :(得分:0)
这可能有用。有时需要帮助。
$items->where(/*.....*/)
->groupBy('user_id')
->take({{$count}});