【发布时间】:2016-05-04 17:38:09
【问题描述】:
我的范围如下:
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();
$label 是从 POST 表单中获取的,它与我的标签表的名称字段匹配。
当我直接从控制器调用时,上述查询有效,如下所示:
Appointment::with(['label' => function ($q) use ($label) {
$q->where('name', '=', $label)->get();
}])->get();
然后返回我的Appointments 表中的所有结果,其中appointments.label_id 与Labels 表中的labels.id 匹配。我希望你还在我身边:)
但是当我在一个范围内使用查询时,就像上面一样,它不起作用。它只是返回所有结果,我似乎无法弄清楚为什么会这样。有什么指点吗?
【问题讨论】:
-
是的,没关系,如果我直接将它放在控制器中,我的查询也不起作用。我可能不得不使用 whereHas 或其他东西。我会弄清楚并发布答案:)