如何将一个模型与两个不同的模型联系起来?

时间:2015-09-28 06:01:08

标签: php laravel eloquent

我有以下表格:

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');
}

我需要获取用户的城市名称。我可以在这里使用哪种关系来做到这一点?

1 个答案:

答案 0 :(得分:0)

根据你的评论:

  

一个城市可以有很多地区。用户可以在许多地区工作。但是,用户只能在一个城市工作。

由于用户所属的所有区域只属于一个城市,您可以按照以下步骤操作:

$user = User::find(1);
$city = $user->regions()->first()->cities;
echo $city->city_name;