/** * Returns a Page of entities meeting the paging restriction provided in the Pageable object. * * @param Pageable $pageable * * @return Page */ public function findAll(Pageable $pageable = null) { $model = self::$instance; $query = $model->query(); if ($pageable) { $fields = $pageable->fields(); $columns = !$fields->isNull() ? $fields->get() : ['*']; if (count($distinctFields = $pageable->distinctFields()->get()) > 0) { $query->getQuery()->distinct(); $columns = $distinctFields; } $filter = $pageable->filters(); if (!$filter->isNull()) { EloquentFilter::filter($query, $filter); } $sort = $pageable->sortings(); if (!$sort->isNull()) { EloquentSorter::sort($query, $sort); } $pageSize = $pageable->pageSize(); $pageSize = $pageSize > 0 ? $pageSize : 1; return new ResultPage($query->paginate($pageable->pageSize(), $columns, 'page', $pageable->pageNumber())->items(), $query->paginate()->total(), $pageable->pageNumber(), ceil($query->paginate()->total() / $pageSize)); } return new ResultPage($query->paginate($query->paginate()->total(), ['*'], 'page', 1)->items(), $query->paginate()->total(), 1, 1); }
/** * @param Pageable $pageable * * @return array|string */ protected function getPageColumns(Pageable $pageable) { $fields = $this->getColumns($pageable->fields()); $columns = !empty($fields) ? $fields : ['*']; if (count($pageable->distinctFields()->get()) > 0) { $columns = $this->getColumns($pageable->distinctFields()); $columns = empty($columns) ? ['*'] : $columns; $columns = 'DISTINCT ' . implode(', ', $columns); } return $columns; }