未定义的变量:使用高级 where 子句时 laravel 5 中的关键字错误
Undefined variable: keyword error in laravel 5 when using advanced where clause
我正在使用带参数分组的高级 where 子句。这是例子
$users = User::where('role', 'admin')
->where(function ($query){
$query->orWhere('id', 'LIKE', "%$keyword%")
->orWhere('email', 'LIKE', "%$keyword%")
->orWhere('name', 'LIKE', "%$keyword%")
->paginate($perPage);
});
return view('admin.index', compact('users'));
这部分给我一个错误:未定义的变量:关键字
然后我在网上搜索,发现可以这样添加use($keyword, $perPage)
$users = User::where('role', 'admin')
->where(function ($query) use($keyword, $perPage){
$query->orWhere('id', 'LIKE', "%$keyword%")
->orWhere('email', 'LIKE', "%$keyword%")
->orWhere('name', 'LIKE', "%$keyword%")
->paginate($perPage);
});
但是它在我的视图文件中显示错误
调用未定义的方法Illuminate\Database\Query\Builder::appends()
抛出新的 BadMethodCallException("Call to undefined method {$className}::{$method}()");
这是 index.blade.php
中导致错误的行
{{ $users->appends(['search' => Request::get('search')])->links("pagination::bootstrap-4") }}
添加 use($keyword, $perPage) 之前不存在此错误
您需要将 use()
添加到闭包中以使其工作:
->where(function($query) use($keyword, $perPage) {
但我确定您想将分页放在闭包之外以使查询真正起作用:
User::where('role', 'admin')
->where(function($query) use($keyword) {
$query->orWhere('id', 'LIKE', "%$keyword%")
->orWhere('email', 'LIKE', "%$keyword%")
->orWhere('name', 'LIKE', "%$keyword%");
})
->paginate($perPage);
你在 closure
里面 paginating
。像下面这样在最后尝试 paginate
-
$users = User::where('role', 'admin')
->where(function ($query) use($keyword){
$query->orWhere('id', 'LIKE', "%$keyword%")
->orWhere('email', 'LIKE', "%$keyword%")
->orWhere('name', 'LIKE', "%$keyword%")
;
})->paginate($perPage);
我正在使用带参数分组的高级 where 子句。这是例子
$users = User::where('role', 'admin')
->where(function ($query){
$query->orWhere('id', 'LIKE', "%$keyword%")
->orWhere('email', 'LIKE', "%$keyword%")
->orWhere('name', 'LIKE', "%$keyword%")
->paginate($perPage);
});
return view('admin.index', compact('users'));
这部分给我一个错误:未定义的变量:关键字
然后我在网上搜索,发现可以这样添加use($keyword, $perPage)
$users = User::where('role', 'admin')
->where(function ($query) use($keyword, $perPage){
$query->orWhere('id', 'LIKE', "%$keyword%")
->orWhere('email', 'LIKE', "%$keyword%")
->orWhere('name', 'LIKE', "%$keyword%")
->paginate($perPage);
});
但是它在我的视图文件中显示错误
调用未定义的方法Illuminate\Database\Query\Builder::appends()
抛出新的 BadMethodCallException("Call to undefined method {$className}::{$method}()");
这是 index.blade.php
中导致错误的行{{ $users->appends(['search' => Request::get('search')])->links("pagination::bootstrap-4") }}
添加 use($keyword, $perPage) 之前不存在此错误
您需要将 use()
添加到闭包中以使其工作:
->where(function($query) use($keyword, $perPage) {
但我确定您想将分页放在闭包之外以使查询真正起作用:
User::where('role', 'admin')
->where(function($query) use($keyword) {
$query->orWhere('id', 'LIKE', "%$keyword%")
->orWhere('email', 'LIKE', "%$keyword%")
->orWhere('name', 'LIKE', "%$keyword%");
})
->paginate($perPage);
你在 closure
里面 paginating
。像下面这样在最后尝试 paginate
-
$users = User::where('role', 'admin')
->where(function ($query) use($keyword){
$query->orWhere('id', 'LIKE', "%$keyword%")
->orWhere('email', 'LIKE', "%$keyword%")
->orWhere('name', 'LIKE', "%$keyword%")
;
})->paginate($perPage);