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