Вопрос по отношениям 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 шт):
Если я все правильно понял то:
//у 1 филиала должна быть связь к клиентам например
public function bases()
{
return $this->hasMany('App\Base', 'branch');
}
//если у тебя уже получен клиент то раскладываем филиалы
foreach ($user->branches as $branch) {
//далее раскладываем филиал на список клиентов для получения списка имен например или сразу делаем каунт если просто нужно узнать количество клиентов смотря какая задача поставлена
foreach ($branch->bases as $base) {
# code...
}
}
Вам нужно использовать Nested Eager Loading.
- Нужно сделать связь между филиалом и клиентом.
- А после можете получить клиентов с помощью
User::with(['branches.bases'])->get();
