Laravel 5 hasManyThrough повторяющееся содержимое строки

У меня есть следующие таблицы базы данных:

tour
   idtour
    other_columns

day
   idday
   other_columns

tour_has_day
   idtour
   idday

В каждом туре много дней, и эти дни можно использовать в других турах.

Итак, в модели Tour.php я добавляю эту функцию:

function days () {
    return $this->hasManyThrough('App\Day', 'App\Tour_has_day', 'idtour', 'idday');
}

Это дает мне правильное количество связанных дней, но все строки имеют одинаковое содержание.

Я отлаживаю запрос, который он возвращает:

select 
    `day`.*, 
    `tour_has_day`.`idtour` 
from `day` 
inner join 
    `tour_has_day` on `tour_has_day`.`idtour` = `day`.`idday`
where 
    `tour_has_day`.`idtour` = '1'

И он возвращается

тест рабочей среды mysql


person jsertx    schedule 12.09.2015    source источник
comment
Это похоже на сводную таблицу, для которой было бы полезно отношение «многие ко многим», а не «многие через».   -  person Joel Hinz    schedule 12.09.2015
comment
@JoelHinz Опубликуйте это как ответ, и я проверю его как успешный. Спасибо   -  person jsertx    schedule 12.09.2015
comment
С удовольствием, спасибо. И я рад, что это помогло.   -  person Joel Hinz    schedule 12.09.2015


Ответы (1)


Вам понадобится отношение «многие ко многим» со сводной таблицей, подобной той, что у вас есть для этого. Отношение has-many-through используется, когда у вас есть родитель и дочерний элемент, а дочерний элемент является родителем другого дочернего элемента.

person Joel Hinz    schedule 12.09.2015