Как отношения Laravel / Eloquent hasMany могут иметь локальный ключ?

В laravel, когда одна запись в таблице A (например, пользователи) связана со многими записями в таблице B (например, способы оплаты), мы определяем «имеет много» отношений.

Итак, в модели User.php мы установили:

return $this->hasMany('PaymentMethods', 'foreign_key', 'local_key');

Внешний ключ имеет смысл, например, возможно useridпотому что каждая запись в таблице способов оплаты будет иметь только 1 пользователя. Однако, почему здесь может быть установлен локальный ключ? Каким образом таблица пользователей может иметь ключ идентификатора «метод оплаты», если она связана со многими способами оплаты, и поэтому ее нельзя установить для одного идентификатора метода оплаты?

Точно так же, чтобы завершить отношения, я должен определить ownTo в модели PaymentMethod.php:

 return $this->belongsTo('User');

Здесь следует только установить второй параметр, то есть локальный ключ (например, userid)?

0

Решение

Вы можете определить local_key если связь основана на другом столбце, чем первичный ключ пользователя.

Если вы придерживаетесь по умолчанию, первичные ключи называются id и ссылаясь на столбцы, например, user_id, Тогда вы можете просто сделать:

return $this->hasMany('PaymentMethod');

а также

return $this->belongsTo('User');
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]