2016-06-22 5 views
0

belongsTo соотношение в Laravel возвращается нульLaravel belongsTo дает нуль

public function games(){ 
    return $this->belongsTo('App\Models\Game'); 
    } 

но когда я предоставить ключ в качестве аргумента, кажется, работает нормально

public function games(){ 
     return $this->belongsTo('App\Models\Game','game_id'); 
     } 

но согласно docsgame_id является само по себе является аргумент по умолчанию. Какая маленькая вещь мне здесь не хватает.

Благодаря

+3

Это скорее примечание, но не должно быть 'game()', поскольку оно принадлежит к одной игре? –

+0

@ThunderBird вы можете предоставить и другую сторону отношения? Также любые соответствующие части к вашей схеме базы данных? –

ответ

1

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

В этом случае ваш метод отношений называется games, поэтому он будет искать поле внешнего ключа games_id. Вы можете либо указать поле внешнего ключа в качестве второго параметра, как вы показали, либо переименовать свой метод отношений на game().

1

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

На данный момент, я предполагаю, что Laravel думает, что ваш ключ ключа будет «games_id».

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