/** * get an array of data to use in the response * @param Query $query the query to use to retrieve the data * @param Paginator $paginator * @param array $additionalData an associative array of data to merge with the data array */ protected function getData($query, $additionalData = array()) { //use this hook to alter the parameters $paginator = null; if (Input::get('page') || $this->paginate) { $beforePagination = Event::fire('before.pagination', array(&$query)); //check if $object is a model or a relation $model = $query->getModel(); $model = method_exists($model, 'getRelated') ? $model->getRelated() : $model; $perPage = Input::get('pp') ?: $model->getPerPage(); $paginator = $query->paginate($perPage); //preserve the url query in the paginator $paginator->appends(Input::except('page')); } $results = isset($paginator) ? $paginator->getCollection() : $query->get(); $data = array(); $data[$this->resultsKey] = $this->isAjaxRequest() ? $results->toArray() : $results; $data['total'] = isset($paginator) ? $paginator->getTotal() : $data->{$this->resultsKey}->count(); if ($paginator) { $data['paginator'] = $paginator; } if (is_array($additionalData)) { $data = array_merge($data, $additionalData); } return $data; }