我想在查询中创建一个嵌套参数分组,其中的嵌套where
之一的值是从表单中获取的。
if($request->view != '') {
$query->where(function ($query) {
$query->where('type', $request->view)
->orWhere('type', 2);
})->get();
}
现在我得到Undefined variable: request
。
如何获得函数中$request->view
的值?
答案 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])
}