【发布时间】:2019-12-25 15:30:40
【问题描述】:
我在使用偏移量和限制获取记录时遇到问题。
目前我的数据库中有 73 条记录
我的身体请求如下所示。
{
"email": "",
"name": "",
"role_id":"",
"pageNumber": 8,
"pageSize": 10
}
这里 pageNumber 8 表示第 7 页,因为它从 0 开始 页面大小为 10 表示希望在页面中显示 10 条记录,预期输出应为 3 条记录,因为在 70 到 80 之间有 3 条记录,因为我的总记录为 73 条,它应该显示 3 条记录。
但它显示 10 条记录:
我的代码:
$pram = $request->name;
$email= $request->email;
$roleId= $request->role_id;
$pageNumber= $request->pageNumber;
$pageSize= $request->pageSize;
$UserResultQuery = User::with('userBasicInfo','userFacility','roles');
if (!empty($pram)) {
$UserResultQuery->where(function ($query) use ($pram) {
$query->whereHas('userBasicInfo', function ($query1) use ($pram) {
$query1->where('first_name', 'like', '%' . $pram . '%');
$query1->orWhere('middle_name', 'like', '%' . $pram . '%');
$query1->orWhere('last_name', 'like', '%' . $pram . '%');
})->with(['userBasicInfo' => function ($query1) use ($pram) {
$query1->where('first_name', 'like', '%' . $pram . '%');
$query1->orWhere('middle_name', 'like', '%' . $pram . '%');
$query1->orWhere('last_name', 'like', '%' . $pram . '%');
}]);
});
}
if (!empty($roleId)) {
$UserResultQuery->where(function ($query) use ($roleId) {
$query->whereHas('userFacility', function ($query1) use ($roleId) {
$query1->where('role_id', $roleId);
})->with(['userFacility' => function ($query1) use ($roleId) {
$query1->where('role_id', $roleId);
}]);
});
}
if (!empty($email)) {
$UserResultQuery->where('email', 'like', '%' . $email . '%');
}
$results=$UserResultQuery->offset($pageNumber)->limit($pageSize)->get();
$results=$results->toArray(); // here using offset and limit
$totalRecords=count($allUsers);
return response(['status' => true, 'data' => $user_array,'totalRecords' => $totalRecords]);
【问题讨论】:
-
您正在使用您的
$pageNumber作为偏移量,但它没有偏移量(以行数计)。要获得偏移量,您必须将其乘以您的页数(例如$pageSize),例如$offset = ($pageNumber - 1) * $pageSize -
能否请您在我的代码中实现您的逻辑,这将对我有更多帮助,谢谢
标签: php laravel search limit offset