Reputation: 8127
In laravel, when a single entry in table A (e.g. Users) is associated with many entries in table B (e.g. Payment Methods), we define a "has many" relationship.
So, in User.php model we set:
return $this->hasMany('PaymentMethods', 'foreign_key', 'local_key');
The foreign key makes sense, e.g. it could be userid
, because each entry in the payment methods table B will have only 1 user. However, why can a local key be set here? How can the users table ever have a "payment method" id key when it is associated with many payment methods, and therefore cannot be set to a single payment method id?
Similarly, to complete the relationship, I have to define a belongsTo in the PaymentMethod.php model:
return $this->belongsTo('User');
In here, should one only set the second parameter, i.e. the local key (e.g. to userid
)?
Upvotes: 0
Views: 2366
Reputation: 336
You can define local_key
if the relationship is based on a different column than the primary key of User.
If you stick with the default, primary keys are named id
and referring columns for example user_id
. Then you can simply do:
return $this->hasMany('PaymentMethod');
and
return $this->belongsTo('User');
Upvotes: 3