属于多个关系.如何获得唯一的行 [英] BelongsToMany relation. How to get unique rows
本文介绍了属于多个关系.如何获得唯一的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在数据库中有下一个'member_companies'
表:
I have next 'member_companies'
table in DB:
在模型成员中有一个关系:
And in model Member has a relation :
public function companies()
{
return $this->belongsToMany(Company::class, 'member_companies');
}
这使我回到所有拥有复制品的公司.例如,Member::find(238)->companies->pluck('id')
return
And it return me all companies with dublicates. For example, Member::find(238)->companies->pluck('id')
return
[
6,
5,
7,
2,
10,
8,
4,
13,
14,
10,
8,
13
]
但是我只想要独特的物品.像
But I want only unique items. Like
[
6,
5,
7,
2,
10,
8,
4,
13,
14,
]
我该如何通过雄辩的关系做到这一点?
How can I do it with eloquent relations?
推荐答案
我找到了下一个解决方案:
I found next solution:
public function companies()
{
$relation = $this->belongsToMany(Company::class, 'member_companies');
$relation->getQuery()->getQuery()
->joins[0]->table = \DB::raw('(SELECT DISTINCT member_id, company_id FROM member_companies) as member_companies');
return $relation;
}
但是此代码可能还有更精致的变体?
But maybe there is more delicate variant of this code?
这篇关于属于多个关系.如何获得唯一的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文