【问题标题】:Laravel 5 scope not workingLaravel 5范围不起作用
【发布时间】: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_idLabels 表中的labels.id 匹配。我希望你还在我身边:)

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

【问题讨论】:

  • 是的,没关系,如果我直接将它放在控制器中,我的查询也不起作用。我可能不得不使用 whereHas 或其他东西。我会弄清楚并发布答案:)

标签: php laravel scope


【解决方案1】:

已经回答过一次,我也遇到过类似的问题,但我没有从中学到任何东西,真丢人。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2015-06-04
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多