动态或何处条款

时间:2019-10-03 15:16:29

标签: php laravel

我想在查询中创建一个嵌套参数分组,其中的嵌套where之一的值是从表单中获取的。

if($request->view != '') {
    $query->where(function ($query) {
    $query->where('type', $request->view)
            ->orWhere('type', 2);
    })->get();
}

现在我得到Undefined variable: request。 如何获得函数中$request->view的值?

4 个答案:

答案 0 :(得分:2)

您没有将$request变量传递给匿名函数。看看PHP documentation

为了使您的代码正常工作,您必须进行如下更改:

if($request->view != '') {
    $query->where(function ($query) use($request) { // <-- without use, your 
      $query->where('type', $request->view)         //     anonymous function
            ->orWhere('type', 2);                   //     cannot access $request
    })->get();
}

答案 1 :(得分:1)

if($request->view != '') {
    $query->where(function ($query) use ($request) {
    $query->where('type', $request->view)
            ->orWhere('type', 2);
    })->get();
}

答案 2 :(得分:1)

使用use

将其添加到范围
if($request->view != '') {
    $query->where(function ($query) use ($request) {
        $query->where('type', $request->view)
            ->orWhere('type', 2);
    })->get();
}

答案 3 :(得分:1)

您无需使用orWhere()。您可以使用whereIn()

if($request->view != '') {
    $query->whereIn('type', [$request->view, 2])
}