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();

您可能希望将 haswith 结合使用。

$entries = Entry::has('area')->with('area')->get();

这将 return 只有 Entry 个具有相关 Area

你的问题有点令人困惑,听起来你想要得到 Areas 其中有 Entrys 在这种情况下你将从 Area 对象开始。

$areas = Area::has('entries')->get();

那将 return 只有 Area 至少有一个 Entry。它也不会急于加载条目,如果您也需要该数据,您可以像第一个示例一样链接 with()