【问题标题】:Laravel hasone relation explainLaravel hasone 关系解释
【发布时间】:2018-05-29 00:33:12
【问题描述】:

return $this->hasOne('App\Phone', 'foreign_key', 'local_key');

我需要在这两个表中有一个关系。

在两个表中,关系应该在父表和子表中的用户名列之间,而不是父表中的 id 和用户名或子表中的任何其他列。 请解释上述hasone函数中的第三个参数。

【问题讨论】:

    标签: laravel laravel-eloquent


    【解决方案1】:

    那么,您的用户有护照,对吧?然后,在您的用户模型中,您需要编写以下方法来管理这种关系:

    public function passport(){
        return $this->hasOne(Passport::class, 'username', 'username');
    }
    

    这里,我想你知道第一个参数,它是关系表的模型(类)名称。第二个参数是外键,表示passports 表中定义与users 关系的列。如果不传递第二个参数,则默认为user_id。

    第三个参数

    第三个参数是users 表的列名(本地键),它在passports 表中被称为关系。 By 如果您不传递第三个参数,则默认为id。在您的情况下,当您将 users 用户名与 passports 表用户名连接时。所以,users 表的username(第三个参数)与passports table'susername`(第二个参数)相关。

    【讨论】:

    • 你可以用反比关系扩展你的答案是非常有用的。会很棒
    【解决方案2】:

    第三个参数是users 表中的一个本地键列。所以关系应该是这样的:

    public function passport()
    {
        return $this->hasOne('App\Passport', 'username', 'username');
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-06
      • 2017-04-21
      • 2016-03-17
      • 1970-01-01
      • 2020-04-09
      • 2018-05-29
      • 1970-01-01
      • 2018-09-12
      • 2020-03-04
      相关资源
      最近更新 更多