Отношение нескольких моделей - PullRequest
0 голосов
/ 27 апреля 2018

долгое время я не работал с Laravel, я изо всех сил в получении некоторых данных.

Я пытаюсь получить всех букмекеров от соревнования, но не получаю:

дб:

leagues:
-id
-name

league_bookmakers:
- id
- league_id
- bookmaker_id

bookmakers:
- id
- name

Контроллер:

 $example = \App\League::find(440);

    dd($example->bookmakers());

Модельная лига:

public function bookmakers()
    {
        return $this->hasMany(LeagueBookmaker::class);
    }

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Когда вы вызываете метод отношения в модели ($example->bookmakers()), он возвращает фактическое отношение, позволяя вам добавить дополнительные ограничения.

То, что вам нужно для вызова, - это «динамическое свойство», которое просто возвращает данные из отношения как есть:

$example->bookmakers // without the ()
0 голосов
/ 27 апреля 2018

Когда вы вступаете в отношения с таблицей league_bookmakers, вы не сможете напрямую получать данные о букмекерах. В этом случае, вы можете определить отношение toTanyMany, как показано ниже:

public function bookmakers()
    {
        return $this->belongsToMany(Bookmaker::class, 'league_bookmakers','league_id', 'bookmaker_id');
    }

Он вернет информацию таблицы букмекеров напрямую.

0 голосов
/ 27 апреля 2018

Что вы получаете? Вы получаете пустую коллекцию? Как прокомментировано попробуйте сделать это

dd($example->bookmakers);

Кроме того, попробуйте сначала выполнить dd($example) и посмотреть, есть ли в нем свойство bookmakers collection.

...