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