Laravel关系:获取模型数组的关系


Laravel relationships: get the relation of an array of models

我有一个特定模型的数组,从数据库中检索到,假设:

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

我想获得与条目相关的所有"区域"。

条目与一个且仅与一个区域相关。

我可以遍历$entries数组,获取每个数组的Area并将其存储在另一个数组中,注意避免重复(是的,我想要一个"不同的"区域)。

难道没有更好的解决方案吗?即使在(删除重复项)之后处理所有区域也比循环遍历$entries数组更好(我认为)。

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

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

这将仅返回具有相关AreaEntry

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

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

这将仅返回至少具有一个EntryArea。 它也不会急于加载条目,如果您还需要该数据,则可以像第一个示例中一样链接with()

一种方法可能是,在获取所有区域之后获取所有条目 id 区域:

$ids =  Entry::all(['area_id'])->toArray();
$areas = Area::whereIn($ids)->distinct()->get();