Laravel 5范围不起作用

时间:2016-01-27 16:35:10

标签: php laravel scope

我有以下范围:

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_idlabels.id表中的Labels匹配。我希望你还和我在一起:)。

但是当我在范围内使用查询时,如上所述,它不起作用。它只是返回所有结果,我似乎无法弄清楚为什么会这样。有什么指针吗?

1 个答案:

答案 0 :(得分:0)

已经回答过一次,类似的问题,我没有从中学到任何东西,对我感到羞耻。

Laravel Search Relationship

        $appointment = App\Appointment::whereHas('label', function ($query) use ($label){
            $query->where('name', '=', $label);
        })
            ->with(['status' => function($query) use ($label){
                $query->where('name', '=', $label);
            }])->get();