Как создать связь в Laravel 5, которая будет собирать записи о собственной модели, упомянутой в сводной таблице? - PullRequest
0 голосов
/ 26 августа 2018

У меня есть 3 таблицы пользователей, компании и сводная таблица с user_id, company_id. Я не могу получить пользователей, принадлежащих моей компании внутри модели пользователя . Пробовал как

belongsToMany('App\User','companies_users','company_id','user_id' );

но у меня связь с неправильными пользователями.

1 Ответ

0 голосов
/ 26 августа 2018

Поскольку у вас есть belongsToMany отношение между User и Company, User принадлежит более чем одному Company. Получить пользователей компаний из конкретной User не составит труда. Если вы уверены, что это именно то, что вы хотите, то сделайте следующее:

//inside the User model
public function companies()
    {
        return $this->belongsToMany('Company');
    }

//inside the User model
public function companiesusers()
    {
        $users= new Illuminate\Database\Eloquent\Collection;

        foreach($this->companies as $company)
        {
            $users = $users->merge($company->users->get());
        }

        return $users->unique();
    }

//inside the Company model
    public function users()
        {
            return $this->belongsToMany('User');
        }

Тогда вы можете получить пользователя companiesusers примерно так:

User::first()->companiesusers();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...