/** * Parse the query parameters with the given options. * Either for a single dataset or multiple. * * @param mixed $options * @param boolean $multiple * @return void */ public function parse($options, $multiple = false) { $this->multiple = $multiple; if ($multiple) { $fullTextSearchColumns = $options; //Parse and apply offset using the laravel "offset" function if ($offset = $this->getParam('offset')) { $offset = intval($offset); $this->query->offset($offset); } //Parse and apply limit using the laravel "limit" function if ($limit = $this->getParam('limit')) { $limit = intval($limit); $this->query->limit($limit); } //Parse and apply the filters using the different laravel "where" functions //Every parameter that has not a predefined functionality gets parsed as a filter if ($filterParams = $this->getFilterParams()) { $this->parseFilter($filterParams); } //Parse an apply the fulltext search using the different laravel "where" functions //The fulltext search is only applied to the columns passed by $fullTextSearchColumns. if ($this->getParam('q') !== false) { $this->parseFulltextSearch($this->getParam('q'), $fullTextSearchColumns); } } else { $identification = $options; if (is_numeric($identification)) { $this->query->where('id', $identification); } else { if (is_array($identification)) { foreach ($identification as $column => $value) { $this->query->where($column, $value); } } } } //Parse and apply field elements using the laravel "select" function //The needed fields for the with function (Primary and foreign keys) have to be added accordingly if ($fields = $this->getParam('fields')) { $this->parseFields($fields); } //Parse and apply sort elements using the laravel "orderBy" function if ($sort = $this->getParam('sort')) { $this->parseSort($sort); } //Parse and apply with elements using the Laravel "with" function if (($with = $this->getParam('with')) && $this->isEloquentBuilder) { $this->parseWith($with); } //Parse the config params if ($config = $this->getParam('config')) { $this->parseConfig($config); } if ($this->isEloquentBuilder) { //Attach the query builder object back to the eloquent builder object $this->builder->setQuery($this->query); } }
/** * @param $value * @return $this */ public function applyLimit($value) { /** * Save to conditons. */ $this->addCondition('limit', $value); $this->model = $this->model->limit($value); return $this; }
/** * Возвращает коллекцию в виде пагинации * * @param int $page * @param int $limit */ public function pagination($page, $limit = 10) { /** * @var \Illuminate\Support\Collection $data */ $countTotal = $this->_query->count(); $this->_query->skip($limit * $page - $limit); $this->_query->limit($limit); $data = collect(); foreach ($this->_query->get() as $key => $instance) { $_listRow = []; foreach ($this->columns->getColumns() as $column) { $_listRow[$column->getKey()] = $column->getValues($instance); } $buttons = $this->filterAction($instance); if (count($buttons)) { $_listRow = array_merge($_listRow, [GridColumn::ACTION_NAME => implode('', $buttons)]); } $data->offsetSet($key, $_listRow); } return new \Illuminate\Pagination\LengthAwarePaginator($data, $countTotal, $limit, $page, ['path' => \Illuminate\Pagination\Paginator::resolveCurrentPath(), 'pageName' => 'page']); }
/** * Set the "limit" value of the query. * * @param int $value * @return $this * @static */ public static function limit($value) { return \Illuminate\Database\Query\Builder::limit($value); }
/** * @param Builder|EloquentBuilder $src * @param OperationInterface|PaginateOperation $operation * @return mixed */ public function process($src, OperationInterface $operation) { $src->limit($operation->getPageSize())->offset($this->getOffset($operation)); return $src; }
public function limit($limit) { $this->original->limit($limit); return $this; }