我有以下表格:
user_details
id - PK
user_name
user_email
cities
id - PK
city_name
regions
id - PK
region_name
city_id - FK(cities)
user_region (Many to Many)
user_id
region_id
这些是模特:
用户
public function regions()
{
return $this->belongsToMany('App\Regions', 'user_region', 'user_id', 'region_id');
}
地区
public function cities()
{
return $this->belongsTo('App\Cities');
}
public function users()
{
return $this->belongsToMany('App\User', 'user_region', 'region_id', 'user_id');
}
城市
public function regions()
{
return $this->hasMany('App\Regions', 'city_id', 'id');
}
我需要获取用户的城市名称。我可以在这里使用哪种关系来做到这一点?
答案 0 :(得分:0)
根据你的评论:
一个城市可以有很多地区。用户可以在许多地区工作。但是,用户只能在一个城市工作。
由于用户所属的所有区域只属于一个城市,您可以按照以下步骤操作:
$user = User::find(1);
$city = $user->regions()->first()->cities;
echo $city->city_name;