PaginationHelper.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. namespace backend\helpers;
  3. use yii\data\ArrayDataProvider;
  4. use yii\data\Pagination;
  5. use yii\db\ActiveQuery;
  6. use yii\db\Query;
  7. class PaginationHelper
  8. {
  9. /**
  10. * @param Query $query
  11. * @param int $page
  12. * @param int $pageSize
  13. * @return array
  14. */
  15. public static function queryPage(Query $query, $page = 1, $pageSize = 20)
  16. {
  17. $pagination = new Pagination();
  18. $pagination->totalCount = $query->count();
  19. $pagination->setPageSize($pageSize);
  20. $pagination->setPage($page - 1, true);
  21. if ($query instanceof ActiveQuery) {
  22. $query->asArray();
  23. }
  24. $models = $query->offset($pagination->getOffset())->limit($pagination->getLimit())->all();
  25. $dataProvider = new ArrayDataProvider([
  26. 'models' => $models,
  27. 'pagination' => $pagination,
  28. ]);
  29. return [
  30. 'dataList' => $dataProvider->getModels(),
  31. 'totalCount' => $dataProvider->getPagination()->totalCount,
  32. 'pageCount' => $dataProvider->getPagination()->getPageCount(),
  33. ];
  34. }
  35. }