封装layPaginate分页工具类thinkphp自带的paginate分页有时返回的参数会不满足自己的需求,可以重写封装trait分页类
1.封装
LayTrait.php 位置随意改,不过要记得修改命名空间路径
namespace app\common\third\miaoyin;
use think\Request;
trait LayTrait
{
/**
* author Lijy
* date 2020/8/1
* 分页方法
* @param Request $request
* @param $model
* @param null $callback
* @return array
*/
protected static function layPaginate(Request $request, $model, $callback = null)
{
$data = self::layPaginateFormat(self::layTablePaginate($request, $model));
if ($callback instanceof \Closure) {
$data['data'] = $callback($data['data']);
}
return $data;
}
/**
* author Lijy
* date 2020/8/4
* 分页查询
* @param Request $request
* @param $model
* @return mixed
*/
protected static function layTablePaginate(Request $request, $model)
{
$limit = $request->param('limit', 10);
$config['page'] = $request->param('page', 1);
return $model->paginate($limit, false, $config);
}
/**
* author Lijy
* date 2020/8/4
* @param $data
* @return array
*/
protected static function layPaginateFormat($data)
{
return [
'total' => $data->total(),
'pageSize' => $data->listRows(),
'pageNum' => $data->currentPage(),
'lastPage' => $data->lastPage(),
'list' => $data->toArray()['data'],
];
}
}
2.控制器Base基础类文件中引用
namespace app\live\controller;
use app\common\third\miaoyin\LayTrait;
use think\App;
use think\facade\Config;
use think\facade\Request;
/**
* 控制器基础类
*/
abstract class Base
{
use LayTrait;
}
3.调用控制器中调用示例
declare (strict_types=1);
namespace app\admin\controller;
class Index
{
public function index()
{
try {
$roomId = $request->get('roomId');
$model = AdvertLogic::getAdvertList($roomId);
$res = self::layPaginate($request, $model);//分页
return successResponse(['data' => $res]);
} catch (\Exception $e) {
return failResponse($e->getMessage(), $e->getCode());
}
}
}