[英]Query from three models containing many-to-many relationship in Laravel 5.2
我有三個型號。 服務,合作伙伴,位置。 合作伙伴在某些地方提供服務。 關系是服務所屬的合作伙伴,合作伙伴所屬的位置。 現在我想做這樣的事情:
$service=Service::find(1);
現在為特定位置找到此服務的合作伙伴。 我可以使用join來做但是如何處理eloquent?
首先,這只是兩個多對多的關系。
因此,我獲取不同服務的位置的方法是:
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);
我最終這樣做了
$service->partners()->whereHas('locations', function ($query) use ($location)
{
$query->where('id', $location);
})
->get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.