Pat*_*tle 5 php eloquent lumen
我有以下数据库表
他们之间有一对多的关系,所以Towns可以有很多,Streets并且Streets可以有多个关系Houses.
我有ID的ID,Town我只想从中得到所有Houses城镇的清单.所以此刻我正在做.
//This gives me streets and houses in nested arrays
$towns = Town::with(['streets', 'streets.houses' => function($query) {
$query->where('active', 1)
}])->find($town_id);
//But I only want a list of houses so I do
$houses = $towns->streets->map(function($street) {
return $street->houses;
});
Run Code Online (Sandbox Code Playgroud)
这有效,但有更好的方法吗?我觉得好像我应该能够使用雄辩的方式获得房屋清单.之后不得不做一些映射似乎不对.
你是对的,在这种情况下延迟加载效率不高。
您只需要房屋列表,我只需使用关节构建适当的查询即可。
这是一个例子:
House::query()
->join('street', 'house.id', 'street.id')
->join('town', 'street.town_id', '=', 'town.id')
->where('town.id', $town_id)
->get();
Run Code Online (Sandbox Code Playgroud)
根据需要进行调整。
有时使用查询构建器比雄辩更有意义。
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |