我无法使它正常工作,也许我仍然不清楚。
//get the Schools of the local government selected
$churchs = Church::with(['confirmed' => function($q){ $q->where('status', 1);}])
->where('state_id', request('state'))->get();
return response()->json(['churchs' => $churchs]);
我也有这种关系
public function confirmed() {
return $this->hasOne(Confirmed::class, 'church_id', 'id');
}
当我执行上述查询时,此约束$q->where('status', 1)
无效。尽管没有错误,但我也得到了状态不为0的教堂列表。
谢谢,我需要一个简单的说明。
答案 0 :(得分:1)
with()
仅渴望加载关系。 with()
中的条件语句仅过滤关系结果,而不过滤基础模型(表)的关系结果。您的查询看起来像:将所有教堂都装入并仅用status=1
确认。
要按关系的列值过滤基表结果,应使用whereHas()
或whereDoesntHave()
方法。
$churchs = Church::whereHas('confirmed', function($query){
$query->where('status', 1);
})
->where('state_id', request('state'))
->get();