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();' –