1
所以我們可以說我有三個型號Laravel 5.1查詢有關關係的外鍵的屬性
- 國家
- 公司
- 部
- 工人
我有以下明顯的關係:
Country::hasMany('Companies');
Company::hasMany('Department');
Department::hasMany('Worker');
Country::hasManyThrough('Department', 'Company');
Company::hasManyThrough('Worker', 'Department');
現在我想要做到的,是讓所有一個Country
,那裏有一個Worker
與salary
超過10000
所以基本上我正在尋找一個關係,其中的Departments
我可以在外部關係上調用where
函數。
事情是這樣的:
Country::find(1)->departments()->where('...', '>=', 10000);
我想過試圖建立一個範圍函數模型Department
,但真的不知道什麼寫有:
public function scopeSalary($query, $salary)
{
return $query->somethingHere()->where('salary', '>=', $salary);
}
我就知道我可以用Join statement in query builder做到這一點,但我認爲這可能有點不好。我想知道在Laravel中是否有辦法在關係外鍵模型上調用where
函數。
我想補充一點,爲了使用該函數內部的變量,你必須使用「使用」的關鍵字。例如,如果你有變量$薪水,你想在函數中使用,你可以使用它像這樣: '國家::發現(1) - >部門() - > whereHas(「工人」,函數($ q)use($ salary){ $ q->其中('salary','> =',$ salary); }) - > get();' –