Laravel 有一个关系解释
Laravel hasone relation explain
return $this->hasOne('App\Phone', 'foreign_key', 'local_key');
我需要在这两个 table 中有一个关系。
在两个 table 中,关系应该在父项和子项 table 的用户名列之间,而不是父项中的 id 和子项中的用户名或任何其他列。
请解释上面hasone函数中的第三个参数。
第三个参数是users
table中的局部键列。所以关系应该是这样的:
public function passport()
{
return $this->hasOne('App\Passport', 'username', 'username');
}
那么,您的用户有护照,对吧?然后,在您的用户模型中,您需要编写以下方法来管理这种关系:
public function passport(){
return $this->hasOne(Passport::class, 'username', 'username');
}
在这里,我想你知道第一个参数,它是关系table 的模型(class) 名称。第二个参数是外键,表示 passports
table 中定义与 users
关系的列 如果不传递第二个参数,它将是 user_id
默认。
第三个参数
第三个参数是您的 users
table 的列名(本地键),它在您的 passports
table 中作为关系提到。如果你不传递第三个参数,那么默认情况下这是 id
。在您的情况下,当您将 users
用户名与 passports
table 的用户名连接时。因此,users
table 的 username
(第三个参数)与 passports table's
username`(第二个参数)相关。
return $this->hasOne('App\Phone', 'foreign_key', 'local_key');
我需要在这两个 table 中有一个关系。
在两个 table 中,关系应该在父项和子项 table 的用户名列之间,而不是父项中的 id 和子项中的用户名或任何其他列。 请解释上面hasone函数中的第三个参数。
第三个参数是users
table中的局部键列。所以关系应该是这样的:
public function passport()
{
return $this->hasOne('App\Passport', 'username', 'username');
}
那么,您的用户有护照,对吧?然后,在您的用户模型中,您需要编写以下方法来管理这种关系:
public function passport(){
return $this->hasOne(Passport::class, 'username', 'username');
}
在这里,我想你知道第一个参数,它是关系table 的模型(class) 名称。第二个参数是外键,表示 passports
table 中定义与 users
关系的列 如果不传递第二个参数,它将是 user_id
默认。
第三个参数
第三个参数是您的 users
table 的列名(本地键),它在您的 passports
table 中作为关系提到。如果你不传递第三个参数,那么默认情况下这是 id
。在您的情况下,当您将 users
用户名与 passports
table 的用户名连接时。因此,users
table 的 username
(第三个参数)与 passports table's
username`(第二个参数)相关。