我在AdInterest和AdInterestGroup模型之间具有ManyToMany关系,在每个模型中都有一个EmiratesToMany()方法,因此我可以使用动态属性:
AdInterest->groups
AdInterestGroup->interests
我可以在一个小组中找到所有“兴趣”,像这样:
$interests = AdInterestGroup::find(1)->interests->pluck('foo');
我需要的是多个组中相关的'foo'字段的合并,重复数据删除数组。
我想我可以使用->unique()
进行重复数据删除,但是首先,正如您所期望的那样:
AdInterestGroup::whereIn('id',[1,2])->interests->get();
抛出:
Eloquent构建器实例上不存在属性[兴趣]。
建议似乎是通过 with()使用急切加载:
AdInterestGroup::with('interests')->whereIn('id',[1,2])->get();
首先,正如您所期望的那样,这虽然给了我两个值的数组(每个ID一个)。
此外,如果我再次尝试pluck('foo')
,它正在查找错误的数据库表:来自 AdInterestGroup 表,而不是关系( AdInterest )
是否有一个很好的,整洁的Collection方法/管道,可以用来合并数据并访问关系字段?