@alexkst

Laravel hasOneThrough или belongsToMany. Как соединить три таблицы?

Пытаюсь соединить три таблицы, через промежуточные.

Имеется такие таблицы:
Apartments            - id - number
House                 - id - number
House_has_aparments   - id - house_id - apartment_id

Street                - id - name
Street_has_houses     - id - street_id - house_id


Я пытаюсь получить полную информацию о текущей квартире. Что-то вроде: Квартира 1 улица название номер дома

Это для номера дома
public function house()
    {
        return $this->belongsToMany(
            Houses::class,
            'houses_has_apartment',
            'apartment_id',
            'house_id',
            'id', 
            'id'
            );
    }


Затем мне нужно как-то получить информацию об улице с помощью house_id.
Я сделал
public function street(){
        return $this->hasOne(Streets::class);
    }


и хотел попробовать вот эту «$apartment->street->find(number)», и (очевидно) это не работает.

Могли бы вы подсказать мне, как решить этот вопрос?
Спасибо.
  • Вопрос задан
  • 344 просмотра
Решения вопроса 1
@jazzus
Одна квартира не может принадлежать нескольким домам и наоборот.
Поэтому
house hasMany apartments
в apartments добавить house_id
Запрос
Apartment::with('house.street')
и в шаблоне $apartment->house->street
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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