Laravel Eloquent关系 - 用户所在国家/地区

时间:2018-02-03 22:53:53

标签: php mysql laravel-5.5 laravel-eloquent

我正在使用Laravel 5.5。我有一个包含

MySQL表实现

表:regions

id      name
1       NA
2       SA
3       AP
3       ASEAN

用户可以创建区域并为其分配国家/地区。

数据透视表:region_countries

id      region_id     country_id
1       1             1
2       1             2 ....
210     5             1

一个国家/地区可以属于多个地区,因为用户可以通过对国家/地区进行分组来创建自定义区域。

表:countries

id      name ....
1       Argentina....

用户属于某个国家/地区,因此属于许多地区

表:Users

id      name          country_id
1       John Smith    32

我的Country课程包含:

/**
 * Countries have many Regions
 */
public function regions()
{
    return $this->hasManyThrough(Region::class, RegionCountry::class);
}

我的Region课程包含:

/**
 * Regions have many Countries
 */
public function countries()
{
    return $this->hasManyThrough(Country::class, RegionCountry::class);
}

因此对于User类关系,这是正确的方法吗?

/**
 * A User has a Country
 */
public function country()
{
    return $this->belongsTo(Country::class, 'country_id');
}

/**
 * A User has many Regions
 */
public function regions()
{
    return $this->country()->hasMany(Region::class, 'region_id');
}

相反,Region类有很多用户

/**
 * Regions have many Countries
 */
public function countries()
{
    return $this->hasMany(Country::class, 'country_id');
}

/**
 * Regions have many Users
 */
public function users()
{
    return $this->countries()->hasMany(User::class, 'country_id');
}

0 个答案:

没有答案