$executors = Executor::whereHas('directions', function($query) {
$query->where('id_user', auth()->user->id);
})
Как я говорил он выведит все execute то привязка к direction нет, чтобы все это учитывал и ставил индекс id из таблицы direction $direction = Direction::with('execute')->get();
просто я не за компьютером и не смогу сейчас посмотреть все результаты. И данный запрос скорее всего выведит все записи execute не учитываю id_user но можно условие сделать $direction = Direction::with('execute')->where('id_user', Auth::user()->id)->get();
, но не суть, тогда будет второй минус они не будут учитывать execute_direction а именно какие direction принадлежат к execute. То есть индекс должен быть direction.id_direction: [
name: name->direction
execute: [
id_execute: [
id: id_execute
name: name_execute
last_name: last_name_execute
]
id_execute: [
id: id_execute
name: name_execute
last_name: last_name_execute
]
]
]
$id_direction = [];
//Получаем id direction c условие что вывести все значение у авторизованного пользователя
$directions = Direction::where('id_user', Auth::user()->id)->get();
foreach ($directions as $value){
// Сравниваем id который получили из моделе direction с промежуточной таблицы Execute_direction
$directionExecute = Exectue_direction::where('direction_id', $value->id)->get();
foreach ($directionExecute as $item){
//Получаем всех execute c который id direction должен совпадать
$executes = Execute::where('id', $item->execute_id)->get();
foreach ($executes as $key => $execute){
// Выходит многомерный массив из следующий данных id_direction -> id_execute и вписываем id name и last name в массив
$id_direction[$value->id]['name'] = $value->name;
$id_direction[$value->id]['execute'][$item->execute_id]['id'] = $execute->id;
$id_direction[$value->id]['execute'][$item->execute_id]['name'] = $execute->name;
$arr[$value->id]['execute'][$item->execute_id]['last_name'] = $execute->last_name;
}
}
}
dd($id_direction);
id_direction: [
name: name->direction
execute: [
id_execute: [
id: id_execute
name: name_execute
last_name: last_name_execute
]
id_execute: [
id: id_execute
name: name_execute
last_name: last_name_execute
]
...
]
]
....
id_direction: [
name: name->direction
execute: [
id_execute: [
id: id_execute
name: name_execute
last_name: last_name_execute
]
id_execute: [
id: id_execute
name: name_execute
last_name: last_name_execute
]
...
]
]
....
$executors = Executor::whereHas('directions', function($query) {
$query->where('id_user', auth()->user->id);
})
тренинги
Иван Иваонович, Михайл Михайлович, Сергей Сергеевич, Евгений Евгеньевич, Петров Петрович
семинар
Иван Иваонович, Михайл Михайлович, Сергей Сергеевич, Евгений Евгеньевич, Петров Петрович
лекции
Иван Иваонович, Михайл Михайлович, Сергей Сергеевич, Евгений Евгеньевич, Петров Петрович
тренинги
Иван Иваонович, Михайл Михайлович
семинар
Сергей Сергеевич, Евгений Евгеньевич, Петров Петрович
лекции
Иван Иваонович, Сергей Сергеевич, Евгений Евгеньевич
Вариант 2: - Направление имеет несколько исполнителей, и исполнитель принадлежит нескольким направлениям. Тогда связь многие ко многим и промежуточная таблица нужна.
Но модель Execute_direction не нужна ни в одном из этих случаев
$executors = Executor::whereHas('directions', function($query) {
$query->where('id_user', auth()->user->id);
})