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()
方法。