Laravel Красноречивые отношения Много ко Многим - PullRequest
0 голосов
/ 18 января 2019

Пользователь может иметь одну белую метку.
Whitelabel может иметь много пользователей.
У меня есть сводная таблица со столбцами whitelabel_id и user_id У меня оба отношения настроены с использованием ->belongsToMany() (с обратным).

Я использую сводную таблицу, потому что у меня нет whitelabel_id в таблице пользователей (и я не буду вставлять ее), поэтому она определена как many-to-many, но на самом деле это one-to-many. Я просто получаю first() белую метку, так как для каждого пользователя будет только одна.

Имея это в виду. Как мне select * users с белой меткой пользователя, прошедшего аутентификацию?

У меня есть это, это работает, но это ли путь "Laravel"? Я чувствую, что он немного перегружен, и у Laravel будет сокращенный метод.

$user->when(auth()->user()->whitelabel->first(), function ($query) {
    return 
    $query->whereIn('id', auth()->user()->whitelabel->first()->users->pluck('id'));
})

Это проверяет, есть ли у пользователя авторизации белая метка, а затем получает всех пользователей с одной и той же белой меткой.

У Laravel есть быстрое сокращение для этого?

1 Ответ

0 голосов
/ 18 января 2019

Модели:

class Whitelabel
{
    public function users()
    {
       return $this->belongsToMany(User::class);
    }
}
class User
{
    public function whitelabels()
    {
        return $this->belongsToMany(Whitelabel::class);
    }
}

Вы можете извлечь записи для простого

$user = User::find(Auth::id())
$user->whitelabels

, если хотите вернуть всех пользователей в whitelabel Auth user

foreach($user->whitelabels as $whitelabel){
    $whitelabel->users
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...