我有以下范围:
public function scopeLabel($query, $label)
{
return $query->with(['label' => function ($q) use ($label) {
$q->where('name', '=', $label)->get();
}]);
}
然后我使用如下:
$appointments = Appointment::latest('created_at')->label($label)->get();
$ POST是从POST表单中获取的,它与我的标签表的名称字段匹配。
当我直接从控制器调用它时,上面的查询有效,如下所示:
Appointment::with(['label' => function ($q) use ($label) {
$q->where('name', '=', $label)->get();
}])->get();
然后返回Appointments
表中的所有结果,其中appointments.label_id
与labels.id
表中的Labels
匹配。我希望你还和我在一起:)。
但是当我在范围内使用查询时,如上所述,它不起作用。它只是返回所有结果,我似乎无法弄清楚为什么会这样。有什么指针吗?
答案 0 :(得分:0)
已经回答过一次,类似的问题,我没有从中学到任何东西,对我感到羞耻。
$appointment = App\Appointment::whereHas('label', function ($query) use ($label){
$query->where('name', '=', $label);
})
->with(['status' => function($query) use ($label){
$query->where('name', '=', $label);
}])->get();