コード例 #1
0
 /**
  * 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);
 }
コード例 #2
0
 /**
  * @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;
 }
コード例 #3
0
 /**
  * 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) : Page
 {
     if (null === $pageable) {
         return new ResultPage($this->data, count($this->data), 1, 1);
     }
     $results = $this->findBy($pageable->filters(), $pageable->sortings());
     if (0 !== count($pageable->distinctFields()->get())) {
         $results = $this->resultsWithDistinctFieldsOnly($pageable->distinctFields(), $results);
     }
     $pageSize = $pageable->pageSize() ? $pageable->pageSize() : 1;
     return new ResultPage(array_slice($results, $pageable->offset() - $pageable->pageSize(), $pageable->pageSize()), count($results), $pageable->pageNumber(), ceil(count($results) / $pageSize));
 }