geometria
@geometria

Eloquent: как сделать вложенный запрос?

Есть несколько моделей, которые нужно получить в одном массиве используя только один запрос к БД.
В контроллере выглядит так:

$data_table = Physical_Entity::with(['user'])
                         ->with(['portfolio'])
                         ->with(['works'])
                         ->with(['qualification'])
                          ->get();

    return view('table', compact('data_table'));


Но таблица qualifications выглядит так:
  • id
  • user_id
  • specialization_id


а specializations так:
  • id
  • name


Пробую в модели Physical_Entity такой метод:
public function qualification()
    {
        return $this->hasMany(Qualification::class);
    }


И получаю массив такого вида:
Array ( [0] => Array (
[qualification] => Array ( [0] => Array ( 
[id] => 1 
[user_id] => 1 
[specialization_id] => 2 
[created_at] => 2021-06-16T15:28:31.000000Z 
[updated_at] => 2021-07-05T18:27:38.000000Z ) 
[1] => Array ( 
[id] => 2 
[user_id] => 1 
[specialization_id] => 1 
[created_at] => 2021-06-16T15:30:46.000000Z 
[updated_at] => 2021-07-06T12:10:01.000000Z 
) )


Как сделать вложенный запрос в метод qualification() чтобы обращение к классу Qualification было уже с пересечением с таблицей specializations ?
Т.е. чтобы после каждой записи в массиве получать name каждой специализации

А может другим способом это возможно сделать?
  • Вопрос задан
  • 253 просмотра
Пригласить эксперта
Ответы на вопрос 1
@jazzus
В Qualification сделать belongsTo Specialization и запрашивать ->with('qualification.specialization')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы