属于多个关系.如何获得唯一的行 [英] BelongsToMany relation. How to get unique rows

查看:65
本文介绍了属于多个关系.如何获得唯一的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在数据库中有下一个'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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆