Laravel relationships:获取模型数组的关系
Laravel relationships: get the relation of an array of models
我有一个特定模型的数组,从数据库中检索,比方说:
$entries = Entry::with('area')->get();
我想要所有与条目相关的 'Area'。
一个条目只与一个区域相关。
我可以遍历 $entries
数组,为每个数组获取 Area
并将其存储在另一个数组中,注意避免重复(是的,我想要一个 "distinct" 的区域)。
有没有更好的解决办法?即使在(删除重复项)之后对所有区域进行处理(我认为)也比遍历 $entries
数组更好。
一种方法是,获取所有条目 ID 区域,在获取所有区域之后:
$ids = Entry::all(['area_id'])->toArray();
$areas = Area::whereIn($ids)->distinct()->get();
您可能希望将 has
与 with
结合使用。
$entries = Entry::has('area')->with('area')->get();
这将 return 只有 Entry
个具有相关 Area
你的问题有点令人困惑,听起来你想要得到 Area
s 其中有 Entry
s 在这种情况下你将从 Area
对象开始。
$areas = Area::has('entries')->get();
那将 return 只有 Area
至少有一个 Entry
。它也不会急于加载条目,如果您也需要该数据,您可以像第一个示例一样链接 with()
。
我有一个特定模型的数组,从数据库中检索,比方说:
$entries = Entry::with('area')->get();
我想要所有与条目相关的 'Area'。
一个条目只与一个区域相关。
我可以遍历 $entries
数组,为每个数组获取 Area
并将其存储在另一个数组中,注意避免重复(是的,我想要一个 "distinct" 的区域)。
有没有更好的解决办法?即使在(删除重复项)之后对所有区域进行处理(我认为)也比遍历 $entries
数组更好。
一种方法是,获取所有条目 ID 区域,在获取所有区域之后:
$ids = Entry::all(['area_id'])->toArray();
$areas = Area::whereIn($ids)->distinct()->get();
您可能希望将 has
与 with
结合使用。
$entries = Entry::has('area')->with('area')->get();
这将 return 只有 Entry
个具有相关 Area
你的问题有点令人困惑,听起来你想要得到 Area
s 其中有 Entry
s 在这种情况下你将从 Area
对象开始。
$areas = Area::has('entries')->get();
那将 return 只有 Area
至少有一个 Entry
。它也不会急于加载条目,如果您也需要该数据,您可以像第一个示例一样链接 with()
。