Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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 Laravel paginate方法与变换方法不兼容_Php_Laravel_Pagination - Fatal编程技术网

Php Laravel paginate方法与变换方法不兼容

Php Laravel paginate方法与变换方法不兼容,php,laravel,pagination,Php,Laravel,Pagination,当我在调用paginate(20)后使用转换方法时,它将返回常规结果,不分页,这是不应该的 当我删除transform()method paginate时,它将按预期工作 $users = User::whereUser_role(1) ->join('user_types', 'users.user_type', '=', 'user_types.user_type_id') ->when(request('user-type'), func

当我在调用
paginate(20)
后使用转换方法时,它将返回常规结果,
不分页
,这是不应该的

当我删除
transform()
method paginate时,它将按预期工作

$users =
    User::whereUser_role(1)
        ->join('user_types', 'users.user_type', '=', 'user_types.user_type_id')
        ->when(request('user-type'), function ($query) {
            $query->where('user_types.name', '=', request('user-type'));
        })
        ->addSelect(
            'users.*',
            'user_types.name as user_type',
        )
        ->orderBy('users.created_at', 'desc')
        ->paginate(20)
        ->appends(request()->all())
        ->getCollection()
        ->transform(function ($user) {
            $user->user_status = $user->status ? "Active" : "InActive";
            $user->email_verified = $user->email_verified ? "Yes" : "No";
            return $user;
        });

$users->makeHidden(['user_role']);

return response()->json([
            'message' => 'Success',
            'status' => 200,
            'requestLocation' => request()->path(),
            'success' => true,
            'data' => $users
        ], 200);

您可以使用
getCollection
方法进行相同的操作。根据laravel API文件:

getCollection()
:获取分页器的基础集合

例如

$users = User::whereStatus(1)
          ->paginate(20);


// iterates paginated items and applies a transformation 
$users->getCollection()->transform(function ($user) {
    $user->email_verified = $user->email_verified ? "Yes" : "No";
    return $user;
})

参考资料:

&我正在使用laravel 5.8 versiondoes
map
执行相同的操作?尚未使用它。但也许这也不管用。这个问题的公认答案的不同之处在于
getCollection
transform
之前,使用getCollection可以得到什么结果?简单的结果。当我使用这个方法时,没有任何改变。@Dipen我生成了相同的场景,并且在我结束时工作正常。谢谢你的努力。但看这里我更新了问题。其中我使用的是
where
when
条件以及
appends()
makeHidden()
方法。