我有三種模型。服務,合作伙伴,位置。合作伙伴在某些地點提供服務。關係是服務belongsToMany合作伙伴,合作伙伴belongsToMany位置。現在我想要做這樣的事情:查詢來自Laravel 5.2中包含多對多關係的三個模型
$service=Service::find(1);
現在找到一個特定位置的此服務的合作伙伴。我可以通過加入來做到這一點,但如何處理口才?
我有三種模型。服務,合作伙伴,位置。合作伙伴在某些地點提供服務。關係是服務belongsToMany合作伙伴,合作伙伴belongsToMany位置。現在我想要做這樣的事情:查詢來自Laravel 5.2中包含多對多關係的三個模型
$service=Service::find(1);
現在找到一個特定位置的此服務的合作伙伴。我可以通過加入來做到這一點,但如何處理口才?
最後我做類似這
$service->partners()->whereHas('locations', function ($query) use ($location)
{
$query->where('id', $location);
})
->get();
首先,這只是兩個多對多的關係。
所以,我對得到一個不同的服務的位置的方法是:
Locations::whereHas('partners.services', function ($query) {
$query->where("id", $serviceId);
})->get();
的whereHas
功能只過濾有其鏈接到至少一個服務合作伙伴位置。此外,關閉設置了另一個標準,即$serviceId
。
要獲取特定服務的合作伙伴上的特定位置:
Partner::whereHas('services', function ($query) {
$query->where('id', $serviceId);
})->whereHas('locations', function ($query) {
$query->where('id', $locationId);
});
您還可以查詢其他像姓名,日期等。
在服務模式(service.php)
public function partner() {
return $this->hasMany('Partner')->with('location');
}
在合作伙伴模式(partner.php)
public function partner() {
return $this->hasMany('location');
}
在你的控制器
:
$service=Service::with('partner')->find(1);