2015-09-28 119 views
0

我有以下表格:如何將一個模型與2個不同的模型相關聯?

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

用戶如何可以屬於許多地區?一個城市如何能夠屬於許多地區?如果這兩種情況都是這種情況,那麼您將無法獲得用戶的「城市名稱」,因爲他們可能有很多。 – Sadurnias

+0

一個城市可以有很多地區。用戶可以在許多地區工作。但是,用戶只能在一個城市工作。 – nirvair

+0

編輯我的答案以適合您的情況,您可以檢查,然後回覆。 –

回答

0

根據您的評論:

一個城市可以有許多地區。用戶可以在許多地區工作。但是,用戶只能在一個城市工作。

作爲用戶屬於將只屬於一個城市,你可以根據以下步驟做的所有國家和地區:

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