簡體   English   中英

在Laravel 5.2中查詢包含多對多關系的三個模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM