在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');