所以,让我说我有三个模型
- 国家
- 公司
- 系
- 工人
我有以下明显的关系:
Country::hasMany('Companies');
Company::hasMany('Department');
Department::hasMany('Worker');
Country::hasManyThrough('Department', 'Company');
Company::hasManyThrough('Worker', 'Department');
现在我想要实现的目标是获得Departments
的所有Country
,其中Worker
的{{1}}超过salary
10000
所以基本上我正在寻找一个关系,我可以在外国关系上调用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
函数。