Igo*_*iuk 6 unique has-and-belongs-to-many laravel eloquent
我'member_companies'
在数据库中有下一个表:
并且在模型 Member 中有一个关系:
public function companies()
{
return $this->belongsToMany(Company::class, 'member_companies');
}
Run Code Online (Sandbox Code Playgroud)
它返回给我所有有重复的公司。例如,Member::find(238)->companies->pluck('id')
返回
[
6,
5,
7,
2,
10,
8,
4,
13,
14,
10,
8,
13
]
Run Code Online (Sandbox Code Playgroud)
但我只想要独特的物品。喜欢
[
6,
5,
7,
2,
10,
8,
4,
13,
14,
]
Run Code Online (Sandbox Code Playgroud)
我怎样才能用雄辩的关系做到这一点?
小智 9
不确定它是否是新添加的,但您可以这样做(至少在 Laravel 7 中):
public function companies()
{
return $this->belongsToMany(Company::class, 'member_companies')->distinct();
}
Run Code Online (Sandbox Code Playgroud)
我找到了下一个解决方案:
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;
}
Run Code Online (Sandbox Code Playgroud)
但也许这段代码还有更微妙的变体?
归档时间: |
|
查看次数: |
4391 次 |
最近记录: |