Laravel 有一个关系解释

Laravel hasone relation explain

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

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

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

第三个参数是userstable中的局部键列。所以关系应该是这样的:

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'susername`(第二个参数)相关。