i使用查询获取用户具有的模型,但每个用户只返回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);
这可能会起作用。有时需要帮助。
$items->where(/*.....*/)
->groupBy('user_id')
->take({{$count}});
如果您设置了关系,则可以简单地致电:
$model->models()
$model
是您想要的列表的模型。 models()
是两个项目之间关系的名称。
例如,帖子可能有很多评论。您可以致电$post->comments()
获取帖子评论的列表。
您也可以用一些雄辩的魔术直接从数据库中查询此信息。
Post::with('comments')->where(/*....*/)->get();
编辑:
您可以检查一个模型是否具有x数量的相关模型。
Post::has('comments', '>=', 3)->where(/*...*/)->get();