【问题标题】:Laravel Eloquent Relationships - 3 tables, one of which is a lookup tableLaravel Eloquent 关系 - 3 个表,其中一个是查找表
【发布时间】:2016-05-02 05:55:03
【问题描述】:

我很难理解一些关系。

  1. 我有一个名为 User 的模型(只存储用户)
  2. 名为 Addresses 的模型(存储用户可能拥有的所有地址)
  3. 名为 Country 的模型(国家代码和描述的查找列表)

以下是简化的架构,可帮助您展示我想要实现的目标:

用户模型

user_id (integer)

地址表

user_id (integer)
country_code (integer)

国家表:

country_code (integer)
country_description (text)

我在 User 模型中有如下关系: 用户模型有关系:

public function addresses() {
    return $this->hasMany('App\Address');
}

在地址模型中我有一个关系

public function user() {
    return $this->belongsTo('App\User');
}

现在,在我的刀片模板中,我可以通过 user->addresses @foreach 并返回存储在地址表中的国家代码,例如“US”或“GB”

但是,我希望能够显示国家/地区的完整名称,该名称保存在国家/地区表中。

我如何以及在哪里设置一个关系,它仍然允许我遍历地址表,但也与国家表有关系,以便我可以显示国家/地区描述列。?

任何想法

问候

詹姆斯

【问题讨论】:

  • 未测试,但尝试将其添加到您的 Addresses 模型中:public function country() { return $this->belongsTo('App\Countries', 'country_code'); }。然后,当您遍历用户的地址时:$address->country->country_description

标签: laravel eloquent relationships


【解决方案1】:

在您的地址模型中:

public function countries()
{
    return $this->hasOne('App\Countries', 'country_code');
}

然后您可以访问 $address->countries->country_description;

【讨论】:

  • 谢谢,这行得通——它是如何在我弄错的 Blade.page 中访问它,所以你的 $address->countries->country_description 解决了这个问题。我不知道可以像这样链接。再次感谢!
  • 在此处查看更多内容:laravel.com/docs/5.2/eloquent-relationships
猜你喜欢
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
相关资源
最近更新 更多