Laravel/Eloquent';s has许多关系都有一个本地密钥


How can Laravel / Eloquent's hasMany relationship have a local key?

在laravel中,当表a中的单个条目(例如用户)与表B中的多个条目(例如支付方法)相关联时,我们定义了"具有多个"关系。

因此,在User.php模型中,我们设置了:

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

外键是有意义的,例如它可以是userid,因为支付方法表B中的每个条目将只有一个用户。但是,为什么可以在此处设置本地密钥?当用户表与许多支付方式关联,因此不能设置为单个支付方式id时,它怎么可能有一个"支付方式"id键?

同样,为了完成关系,我必须在PaymentMethod.php模型中定义一个belongsTo:

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

在这里,是否应该只设置第二个参数,即本地密钥(例如userid)?

如果关系基于不同于User主键的列,则可以定义local_key

如果坚持默认设置,主键名为id,引用列例如user_id。然后你可以简单地做:

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

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