【问题标题】:How can Laravel / Eloquent's hasMany relationship have a local key?Laravel/Eloquent 的 hasMany 关系怎么会有本地键?
【发布时间】:2015-01-06 14:12:54
【问题描述】:

在 laravel 中,当表 A 中的单个条目(例如用户)与表 B 中的许多条目(例如付款方式)相关联时,我们定义一个 "has many" relationship.

所以,我们在 User.php 模型中设置:

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

外键是有意义的,例如可能是userid,因为支付方式表 B 中的每个条目只有 1 个用户。但是,为什么这里可以设置本地密钥呢?当用户表与多种付款方式相关联时,它怎么可能有一个“付款方式”id 键,因此不能设置为单个付款方式 id?

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

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

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

【问题讨论】:

    标签: php laravel eloquent relationship


    【解决方案1】:

    如果关系基于不同于用户主键的列,您可以定义local_key

    如果您坚持使用默认值,主键将命名为 id 并引用列,例如 user_id。然后你可以简单地做:

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

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

    【讨论】:

    • 这没有回答问题。在一对多关系中,用户 ID 对支付方式表有何影响?
    • @Tom 为了建立关系,从PaymentMethod 中取出user_id 的值,在id 列上查找User。如果出于任何原因,User 的主键未命名为 id 而是其他任何名称,您可以将其设置为关系中的 local_key
    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2015-12-22
    • 2014-10-29
    • 2013-11-14
    • 2020-05-31
    • 2021-11-06
    • 1970-01-01
    相关资源
    最近更新 更多