В laravel, когда одна запись в таблице A (например, пользователи) связана со многими записями в таблице B (например, способы оплаты), мы определяем «имеет много» отношений.
Итак, в модели User.php мы установили:
return $this->hasMany('PaymentMethods', 'foreign_key', 'local_key');
Внешний ключ имеет смысл, например, возможно userid
потому что каждая запись в таблице способов оплаты будет иметь только 1 пользователя. Однако, почему здесь может быть установлен локальный ключ? Каким образом таблица пользователей может иметь ключ идентификатора «метод оплаты», если она связана со многими способами оплаты, и поэтому ее нельзя установить для одного идентификатора метода оплаты?
Точно так же, чтобы завершить отношения, я должен определить ownTo в модели PaymentMethod.php:
return $this->belongsTo('User');
Здесь следует только установить второй параметр, то есть локальный ключ (например, userid
)?
Вы можете определить local_key
если связь основана на другом столбце, чем первичный ключ пользователя.
Если вы придерживаетесь по умолчанию, первичные ключи называются id
и ссылаясь на столбцы, например, user_id
, Тогда вы можете просто сделать:
return $this->hasMany('PaymentMethod');
а также
return $this->belongsTo('User');
Других решений пока нет …