Laravel有一个关系解释

时间:2017-12-14 20:25:34

标签: laravel laravel-eloquent

enter image description here

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

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

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

2 个答案:

答案 0 :(得分:10)

所以,你的用户有护照,对吗?然后,在您的用户模型中,您需要编写以下方法来管理此关系:

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

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

第三个参数

第三个参数是users表的列名(本地键),它在passports表中被称为关系。如果您未传递第3个参数,则默认为id。在您的情况下,当您将users用户名与passports表用户名相关联时。因此,users表的username(第三个参数)与passports table's用户名(第二个参数)相关。

答案 1 :(得分:1)

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

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