2015-09-12 4 views
0

У меня есть следующие таблицы базы данных: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 workbench test

+0

Это похоже на сводную таблицу, для которой было бы полезно использовать отношение «многие ко многим», а не «много-много». –

+0

@JoelHinz Этот ответ ответ имейте это в виду. Спасибо – jsertx

+0

Рад, спасибо. И я рад, что это помогло. –

ответ

0

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

Смежные вопросы