Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未定义变量:使用高级where子句时laravel 5中的关键字错误_Php_Laravel_Laravel 5_Where Clause - Fatal编程技术网

Php 未定义变量:使用高级where子句时laravel 5中的关键字错误

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',

我正在使用带有参数分组的高级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'));
这部分给了我一个错误:未定义变量:关键字

然后我在网上搜索了一下,发现要添加这样的用法($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()
放在闭包之外。