【问题标题】:Laravel ORM list groupBy related recordsLaravel ORM 列表 groupBy 相关记录
【发布时间】:2015-06-22 13:34:52
【问题描述】:

我有 2 张桌子:
图片 - 包含 id、room_id、floor_id 等信息,
对象 - 包含 images_id、对象。

关系:
图像有许多对象
对象有一张图片

我想按 room_id 对图像进行分组,然后根据这些分组的图像列出房间的所有对象。

目前我有 2 个查询:

Images::where('floor_id', '=', $floor_id)
       ->groupBy('room_id')->get(array('*', DB::raw('GROUP_CONCAT(id) as rooms')));

然后我遍历所有图像组并在其中查找对象。

Objects::whereIn('images_id', explode(',', $rooms))->get()

是否可以将这 2 个查询合并为 1 个,如果可以,那么如何?

我尝试过预加载,但 groupBy 仍然把一切都搞砸了。

【问题讨论】:

    标签: mysql laravel orm group-by relationship


    【解决方案1】:

    这是一个有趣的问题。要保存额外的查询,您可以使用返回的集合和分组。

    Images::where('floor_id', '=', $floor_id)
        ->with('objects')
        ->get()
        ->groupBy('room_id');
    

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2020-05-05
      • 1970-01-01
      • 2019-02-24
      相关资源
      最近更新 更多