gpt4 book ai didi

php - Lumen:如何使用 Eloquent 获取子表列表?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:46:30 27 4
gpt4 key购买 nike

我有以下数据库表

  • 城镇
  • 街道
  • 房子

它们之间是一对多的关系,所以 Towns 可以有很多 StreetsStreets 可以有多个 Houses 就可以了。

我有 城镇 的 ID,我只想从中获取城镇中所有 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;
});

这行得通,但有更好的方法吗?我觉得好像我应该能够使用 Eloquent 方式获得房屋 list 。事后必须做一些映射似乎不对。

最佳答案

你是对的,延迟加载在这种情况下效率不高。

您只需要房屋列表,我会用关节构建适当的查询。

这是一个例子:

House::query()
->join('street', 'house.id', 'street.id')
->join('town', 'street.town_id', '=', 'town.id')
->where('town.id', $town_id)
->get();

根据需要调整。

有时使用查询构建器比 Eloquent 更有意义。

关于php - Lumen:如何使用 Eloquent 获取子表列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43958057/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com