Laravel от 5.3 до 5.4 отношений foreignKey issue

После обновления до 5.4, мои отношения, где больше не работают должным образом. После проверки выяснилось, что Laravel теперь ищет разные имена foreignKey: user_user_id или post_post_id вместо user_id , post_id и т. Д. Это работало до L 5.3. Мне также пришлось обновить некоторые из моих основных стержневых табуляций до tag_tag_id и т. Д., Чтобы заставить их работать снова.

Я обновил свои имена в именах сторон в соответствии с этим новым соглашением, и теперь он работает. Но я все еще хотел бы знать, почему и как это изменилось и откуда оно исходит.

Благодаря!

Related of "Laravel от 5.3 до 5.4 отношений foreignKey issue"

Вы переопределяете первичный ключ на своих моделях с помощью getKeyName ?

Laravel по-прежнему использует ту же самую конвенцию user_id что и внешний ключ.

Однако в 5.4 вам не нужно явно указывать внешний ключ при определении отношения.

Из документов:

Подобно предыдущим релизам Laravel, эта связь обычно использует user_id как внешний ключ. Однако поведение может отличаться от предыдущих выпусков, если вы переопределяете метод getKeyName модели User

Обновление до 5.4.0 От 5.3

Обновить

Проблема может быть вызвана также установкой значения $ primaryKey. Вы не представили никакого кода. Однако, предполагая, что в вашей модели пользователя вы определяете $primaryKey = user_id Laravel добавит имя столбца к этому имени ключа. Таким образом, вы видите, что laravel пытается запросить user_user_id.

Просто удалите $ keyname из пользовательской модели, и laravel возьмет на себя внешний ключ, следуя соглашению user_id.

Или вы могли бы определить внешний ключ, явно передающий второй аргумент в attributeTo (): return $this->belongsTo(User::class, 'user_id);