Вопрос по отношениям Laravel

введите сюда описание изображения

у меня есть таблицы users,branches,bases,user_branches

User список пользователей имеют связи с Branch (один пользователь может быть привязан к многим филиалам)

 public function branches()
    {
        return $this->belongsToMany('App\Branch', 'user_branches');
    }

Base список клиентов тоже имеют связи с Branch (один клиент может быть привязан к одному филиалу)

public function base_branch(){
    return $this->hasOne('App\Branch', 'id', 'branch');
}

Как можно получить коллекцию клиентов к которым имеет отношение пользователь ?

К примеру пользователь привязан к филиалу с id 1 и 2 , соответственно получить коллекцию всех клиентов которые привязаны к этим филиалам

Помогите пожалуйста решить задачку...


Ответы (2 шт):

Автор решения: imvasha

Если я все правильно понял то:

//у 1 филиала должна быть связь к клиентам например

public function bases()

{

return $this->hasMany('App\Base', 'branch');

}

    //если у тебя уже получен клиент то раскладываем филиалы
    foreach ($user->branches as $branch) {
        //далее раскладываем филиал на список клиентов для получения списка имен например или сразу делаем каунт если просто нужно узнать количество клиентов смотря какая задача поставлена
        foreach ($branch->bases as $base) {
            # code...
        }
    }
→ Ссылка
Автор решения: E_K

Вам нужно использовать Nested Eager Loading.

  1. Нужно сделать связь между филиалом и клиентом.
  2. А после можете получить клиентов с помощью User::with(['branches.bases'])->get();
→ Ссылка