【发布时间】:2018-05-29 00:33:12
【问题描述】:
return $this->hasOne('App\Phone', 'foreign_key', 'local_key');
我需要在这两个表中有一个关系。
在两个表中,关系应该在父表和子表中的用户名列之间,而不是父表中的 id 和用户名或子表中的任何其他列。 请解释上述hasone函数中的第三个参数。
【问题讨论】:
return $this->hasOne('App\Phone', 'foreign_key', 'local_key');
我需要在这两个表中有一个关系。
在两个表中,关系应该在父表和子表中的用户名列之间,而不是父表中的 id 和用户名或子表中的任何其他列。 请解释上述hasone函数中的第三个参数。
【问题讨论】:
那么,您的用户有护照,对吧?然后,在您的用户模型中,您需要编写以下方法来管理这种关系:
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`(第二个参数)相关。
【讨论】:
第三个参数是users 表中的一个本地键列。所以关系应该是这样的:
public function passport()
{
return $this->hasOne('App\Passport', 'username', 'username');
}
【讨论】: