返回$ this-> hasOne(' App \ Phone',' foreign_key',' local_key');
我需要在这两个表中建立一个关系。
在两个表中,关系应该在父表和子表中的用户名列之间,而不是父表和用户名中的id或者子表中的任何其他表。 请在上面的hasone函数中解释第3个参数。
答案 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');
}