2016-02-14 123 views
0

我配置了5個模型。客戶,環境,對象,ServiceRole和服務。我已經在每個模型中建立了合適的雄辯關係。Laravel 5.1與一對多和多對多模型的遠程關係

客戶有很多環境。

//Customer Model  
public function environments() 
{ 
return $this->hasMany('App\Environment'); 
} 

環境屬於一個客戶。
環境屬於許多對象。

//Environment Model 
public function customer() 
{ 
    return $this->belongsTo('App\Customer'); 
} 

public function objects() 
{ 
    return $this->belongsToMany('App\Object'); 
} 

對象屬於許多環境。
對象屬於許多ServiceRoles。

//Object Model 
public function environments() 
{ 
    return $this->belongsToMany('App\Environment'); 
} 

public function serviceRoles() 
{ 
    return $this->belongsToMany('App\ServiceRole'); 
} 

ServiceRoles屬於許多對象。
ServiceRoles屬於一個Service。

//ServiceRole Model 
public function objects() 
{ 
    return $this->belongsToMany('App\Object'); 
} 

public function service() 
{ 
    return $this->belongsTo('App\Service'); 
} 

服務屬於許多ServiceRoles。

public function serviceRoles() 
{ 
    return $this->hasMany('App\ServiceRole'); 
} 

--SQL--
客戶:ID,名稱
對象:ID,名稱
環境:ID,姓名,CUSTOMER_ID
environment_object:ID,environment_id ,object_id
service_roles:id,name,service_id
object_service_role:ID,OBJECT_ID,service_role_id
服務

1)什麼是檢索所有相關的客戶對象的最簡單的方法(在所有相關的ID,名稱環境)?

希望做的是這樣的:$客戶 - >對象

2)我怎樣才能然後檢索相關的客戶對象的所有的服務,爲每個對象都有映射到服務ServiceRole 。

希望做的是這樣的:$客戶 - >服務

+0

道歉,我已經添加了模型和修改了我的第二個問題稍微反映另一模型,我錯過了。謝謝 – kayex

回答

0

這將是很好的張貼所有的關係。但如果你說你有適當的建立你的關係,那麼以下應該工作。

1. Customer::with('environments.objects')->get(); 

,但如果只有一個客戶做

Custmer::with('environments.objects')->find($id); 


2. Customer::with('environments.objects.roles')->get(); 

只有一個客戶做

Customer::with('environments.objects.roles')->find($id); 
+0

這似乎檢索嵌套集合,我必須循環。有沒有辦法只檢索「對象」和「服務」?我還添加了我的模型,並澄清了我的第二個問題,因爲我對整體db設計不太清楚。謝謝! – kayex