我正在使用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');
}