laravel 中关联关系数据是如何组装的。
laravel中 HasMany 一对多 通过with关联,会产生2条sql语句来避免N+1,但是laravel是如何组装这2条查询结果的。
是通过遍历根据ID来组装的,还是其他办法。请教一下大家。
- 例如:
{ "id": 1, "label": "label1", "value": "value1", "child": { [ "id": 3, "parent_id": 1, "label": "label1-1", "value": "value1-1", "child": { "id": 4, "parent_id": 3, "label": "label1-1-1", "value": "value1-1-1", } ], [ "id": 5, "parent_id": 6, "label": "label1-2", "value": "value1-2" "child": { "id": 7, "parent_id": 5, "label": "label1-2-1", "value": "value1-2-1", } ] } }
```
本作品采用《CC 协议》,转载必须注明作者和本文链接
根据id和子表parent_id,组装sql,将查询到的数据再根据关联关系附加到数据中去
例如你的数据 select * from table where parent_id in (1)得到的数据在放到list上面去
通过关联方法的 match 方法来进行匹配的,比如前面的 HasMany。
是从查询构建器的
get
->eagerLoadRelations
->eagerLoadRelation
临下班了, 特地帮你把源码翻出来,就是foreach