繁体   English   中英

Laravel雄辩的拥有多次通过关系

[英]Laravel eloquent Has Many Through relationship

所以,就在这里。 我有3个表,它们的结构如下:

**user**
 -id
 -name
 -password
 -etc...

**user_general_info**
 -id
 -the_user_id
 -country_id
 -phone
 -desc
 ...

**country**
 -id
 -name

由于明显的原因,我为每个模型中的三个模型。 现在如何声明这3个之间的雄辩关系,以便可以获取用户所在国家/地区的数据(例如$user->user_general_info->user_country->name )。 我已经尝试过一个hasManyThrough ,但是没有成功。

我是否必须将country 外键添加到user表? 还是我错过了什么?

提前致谢。

有多种处理方法。 但是,最干净的方法之一是在用户模型中声明hasOne关系并检索结果。

因此,假设您有三个模型, UserUserGeneralInfoCountry 转到您的User模型并声明以下内容。

 public function userGeneralInfo()
 {
     return $this->hasOne('App\UserGeneralInfo', 'user_id', 'id');
 }


 public function userCountry()
 {
     return $this->hasOne('App\Country', 'user_id', 'id');
 }

现在在查询时使用以下内容

$user = User:where('id, $id)->with('userGeneralInfo')->with('userCountry')->first();

这将为您提供用户及其相关的一般信息和用户所在的国家/地区。 现在,您可以使用来访问变量。

$user->userGeneralInfo->phone检索电话号码。 同样,使用$user-> userCountry->name获取国家/地区名称。

注意:有多种方法可以达到您想要的结果,这是最简单的方法,供初学者理解。 您可以了解有关laravel关系的复杂关系的更多信息

暂无
暂无

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

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