hyperf-chat/app/Traits/PagingTrait.php

46 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Traits;
/**
* Trait PagingTrait 分页处理
*
* @package App\Traits
*/
trait PagingTrait
{
/**
* 计算分页总数
*
* @param int $total 总记录数
* @param int $page_size 分页大小
* @return int 分页总数
*/
protected function getPagingTotal(int $total, int $page_size): int
{
return ($total === 0) ? 0 : (int)ceil($total / $page_size);
}
/**
* 获取分页数据
*
* @param array $rows 列表数据
* @param int $total 数据总记录数
* @param int $page 当前分页
* @param int $page_size 分页大小
* @param array $params 额外参数
* @return array
*/
protected function getPagingRows(array $rows, int $total, int $page, int $page_size, array $params = []): array
{
return array_merge([
'rows' => $rows,
'page' => $page,
'page_size' => $page_size,
'page_total' => ($page_size == 0) ? 1 : $this->getPagingTotal($total, $page_size),
'total' => $total,
], $params);
}
}