Php 未定义变量:使用高级where子句时laravel 5中的关键字错误
我正在使用带有参数分组的高级where子句。下面是一个例子Php 未定义变量:使用高级where子句时laravel 5中的关键字错误,php,laravel,laravel-5,where-clause,Php,Laravel,Laravel 5,Where Clause,我正在使用带有参数分组的高级where子句。下面是一个例子 $users = User::where('role', 'admin') ->where(function ($query){ $query->orWhere('id', 'LIKE', "%$keyword%") ->orWhere('email', 'LIKE',
$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'));
这部分给了我一个错误:未定义变量:关键字
然后我在网上搜索了一下,发现要添加这样的用法($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);
});
但它会在我的视图文件中显示错误
调用undefined方法illumb\Database\Query\Builder::appends()
抛出新的BadMethodCallException(“调用未定义的方法{$className}::{$method}()”强>
以下是导致index.blade.php中出现错误的行
{{ $users->appends(['search' => Request::get('search')])->links("pagination::bootstrap-4") }}
在添加use($keyword,$perPage)之前,此错误不存在。您需要添加到闭包以使其工作:
->where(function($query) use($keyword, $perPage) {
但我确信您希望将paginate置于闭包之外,以使查询实际工作:
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(function($query) use($keyword, $perPage) {
但我确信您希望将paginate置于闭包之外,以使查询实际工作:
User::where('role', 'admin')
->where(function($query) use($keyword) {
$query->orWhere('id', 'LIKE', "%$keyword%")
->orWhere('email', 'LIKE', "%$keyword%")
->orWhere('name', 'LIKE', "%$keyword%");
})
->paginate($perPage);
您正在
内部关闭分页。尝试在结尾处进行分页,如下所示-
$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);
您正在内部关闭分页。尝试在结尾处进行分页,如下所示-
$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);
@Raj也将其添加到闭包中以修复错误。但我认为您希望将paginate()
放在闭包之外。@Raj也将其添加到闭包中以修复错误。但是我想你应该把paginate()
放在闭包之外。