Laravel ORM列表组有相关记录

时间:2015-04-16 08:50:38

标签: mysql laravel orm group-by relationship

我有两张桌子:
images - 包含id,room_id,floor_id等信息,
对象 - 包含images_id,object。

关系:
图像有很多对象
object hasOne image

我想按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()

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

我尝试了急切的加载,但仍然是groupBy搞砸了一切。

1 个答案:

答案 0 :(得分:0)

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

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