繁体   English   中英

Laravel hasone 关系解释

[英]Laravel hasone relation explain

在此处输入图像描述

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

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

public function passport()
{
    return $this->hasOne('App\Passport', 'username', 'username');
}
hasOne(电话::类); } } 传递给 hasOne 方法的第一个参数是相关模型类的名称。 一旦定义了关系,我们就可以使用 Eloquent 的动态属性来检索相关记录。 动态属性允许您访问关系方法,就好像它们是在模型上定义的属性一样: $phone = User::find(1)->phone; Eloquent 根据父模型名称确定关系的外键。 在这种情况下,电话模型被自动假定为具有 user_id 外键。 如果你想覆盖这个约定,你可以传递第二个参数给 hasOne 方法: return $this->hasOne(Phone::class, 'foreign_key'); 此外,Eloquent 假设外键应该有一个与父主键列匹配的值。 换句话说,Eloquent 会在 Phone 记录的 user_id 列中查找用户 id 列的值。 如果您希望关系使用除 id 或模型的 $primaryKey 属性之外的主键值,您可以将第三个参数传递给 hasOne 方法: return $this->hasOne(Phone::class, 'foreign_key', ' local_key');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM