我有两张桌子:
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搞砸了一切。
答案 0 :(得分:0)
这是一个有趣的问题。要保存额外的查询,您可以使用返回的集合并将其分组。
Images::where('floor_id', '=', $floor_id)
->with('objects')
->get()
->groupBy('room_id');