Некоторые ограничения при работе с внешними ключами в Laravel Eloquent:
- Определение внешнего ключа на основе имени родительской модели. laravel.su Если нужно переопределить это соглашение, можно передать второй аргумент методу hasOne. laravel.su
- Внешний ключ должен иметь значение, соответствующее столбцу первичного ключа родительского элемента. laravel.su Если нужно, чтобы отношение использовало значение первичного ключа, отличное от id или свойства модели $primaryKey, можно передать третий аргумент методу hasOne. laravel.su
- Невозможность использовать несколько внешних ключей для отношений. stackoverflow.com В Eloquent поддерживается только один внешний и локальный ключ. stackoverflow.com
При этом определять внешние ключи в Laravel Eloquent не обязательно, но это хорошая практика, которая позволяет контролировать целостность данных и защищать от неправильных запросов. laracasts.com qna.habr.com