Laravel принадлежит ToMany получить более одной строки - PullRequest
0 голосов
/ 23 ноября 2018

Итак, я создаю систему бронирования, где вы можете создавать карты и назначать их для события.У меня есть 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.

Все остальное работает как положено.

Кто-нибудь, кто мог бы навести порядок в этом беспорядке?:)

1 Ответ

0 голосов
/ 23 ноября 2018

id s инвертированы в отношении.Попробуйте это:

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 that you are joining to
        'event_id'
        // Foreign key name of the model on which you are defining the relationship
        'map_id',
    );
}

И:

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 that you are joining to
        'map_id'
        // Foreign key name of the model on which you are defining the relationship
        'event_id',
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...