alexander7779
@alexander7779
SEO, PHP (разработка на Laravel).

Отношение HasMany, одновременно достать данные из нескольких таблиц?

Добрый день, решил попробовать сделать всё на встроенном Eloquent Laravel, без кучи join и.т.д.
и сразу наткнулся на проблемку.

Имеется связь: название компании, компания может иметь несколько адресов, каждый адрес может иметь несколько телефонных номеров и несколько фоток.

Приложил таблицу.
5b6973ed93180951183548.jpeg

Пытался eloquent'ом достать, но не выходит.
B2c_tires_address::find(1)->photos()->get(); находит фото для определённого адреса или B2c_tires_address::find(1)->phones()->get(); находит телефоны для определённого адреса.
Вместе никак. Чтобы к адресу сразу привязать список фото и телефонов.

Но адресов у компании может быть и несколько, собственно как и других атрибутов у адреса.
B2c_tires_address::where('b2c_tires_id',$userId)->orderBy('priority')->get();
таким образом достаёт адреса, но как туда ещё добавить связь телефонов и фоток.

Может я конечно много от Eloquent хочу, но как это делать.
А может я вообще не так эти связи спроектировал.
  • Вопрос задан
  • 247 просмотров
Решения вопроса 1
@miki131
B2c_tires_address::where('b2c_tires_id', $userId)
->with('phones', 'photos')
->orderBy('priority')
->get();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
tires -> hasMany(address)
address -> hashMany(photo), hashMany(phone)

$tire = Tire::find(1);

foreach($tire->addresses as $address) {
    dump($address->photos);
    dump($address->phones);
}


В чем проблема-то? Зачем вы сразу адрес берете конкретный? Где у вас связь с tire.

Читайте доку короче.
Ответ написан
Ваш ответ на вопрос

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

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