如何返回Groupby的所有行



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();

最新更新