Laravel关系:获得一系列模型的关系

时间:2016-04-26 14:02:42

标签: php laravel model eloquent relationship

我有一个特定模型的数组,从数据库中检索,比方说:

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

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

条目与一个区域相关,只与一个区域相关。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您希望将haswith结合使用。

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

这将仅返回具有相关Entry

Area

您的问题有点令人困惑,听起来您希望得到Area s Entry s,在这种情况下,您将从Area对象开始。

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

这将只返回至少有一个Area的{​​{1}}。它也不会急于加载条目,如果你也需要这些数据,你可以链接Entry,就像在第一个例子中一样。