Итак, я создаю систему бронирования, где вы можете создавать карты и назначать их для события.У меня есть 3 таблицы, чтобы справиться с этим, events
, maps
и event_maps
У меня после прочтения документации Laravel я решил установить отношение ownToMany.
Но когдая пытаюсь получить свои карты через мою модель событий, я получаю только одну первую строку.
в моем контроллере я делаю
public function displayForm($id)
{
$event = EventModel::find($id);
print_r($event->maps);
}
В результате получается объект Illuminate \ Database \ Eloquent \ Collectionс последней из двух карт, и я не могу на всю жизнь понять, как получить их все.
Моя EventsModel
public function maps()
{
return $this->belongsToMany('App\Models\Booky\MapsModel',
// Table name of the relationship's joining table.
'event_maps',
// Foreign key name of the model on which you are defining the relationship
'map_id',
// Foreign key name of the model that you are joining to
'event_id'
);
}
Моя MapsModel
public function event()
{
return $this->belongsToMany('App\Models\Booky\EventsModel',
// Table name of the relationship's joining table.
'event_maps',
// Foreign key name of the model on which you are defining the relationship
'event_id',
// Foreign key name of the model that you are joining to
'map_id'
);
}
База данных выглядит примерно так
events
- id
- lots of irrelevant data
maps
- id
- lots of irrelevant data
event_maps
- id
- event_id
- map_id
Я думал, что, возможно, мне следует использовать другой тип отношений, но, насколько я понимаю, они не используют таблицу отношений, такую как event_maps
.
Все остальное работает как положено.
Кто-нибудь, кто мог бы навести порядок в этом беспорядке?:)