Laravel Eloquent 关系 - 3 tables,其中一个是查找 table

Laravel Eloquent Relationships - 3 tables, one of which is a lookup table

我正在努力了解一些关系。

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

以下是简化的架构,可帮助您了解我正在努力实现的目标:

用户模型

user_id (integer)

地址Table

user_id (integer)
country_code (integer)

国家table:

country_code (integer)
country_description (text)

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

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

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

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

现在,在我的 blade 模板中,我可以通过 user->addresses 和 return 存储在地址 table 中的国家/地区代码来 @foreach,例如 'US' 或 'GB'

但是,我希望能够显示国家 table 中保存的完整国家名称。

如何以及在何处设置关系,它仍然允许我遍历地址 table,但也与国家 table 有关系,以便我可以显示国家- >country_description 列。?

任何想法

此致

詹姆斯

在您的地址模型中:

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

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