/** * @param $className * @param $parameters * @param bool $runQuery * @return array */ public function query($className, $parameters, $runQuery = true) { // set the default parameters $defaultParameters = array('where' => null, 'limit' => null, 'skip' => null, 'order' => null, 'keys' => null, 'count' => null, 'include' => null); $parameters = array_merge($defaultParameters, $parameters); extract($parameters); // specify the selected columns $selected_columns = $this->select($keys); // eager loading functionality $this->with($include); // filtering the data // todo review this line $query = $this->object instanceof Model ? $this->object->query() : $this->object; $this->object = $this->where($query, $where); // support pagination using limit and skip (offset) $this->limit($limit, $skip); // order the result $this->order($order); if ($runQuery) { // prepare the json main structure $jsonData = array('results' => array()); // run the query based on the above configuration $jsonData['results'] = $this->object->get($selected_columns); if (!is_null($count)) { // add the count index if the user ask for $jsonData['count'] = $this->object->count(); } // return the parsed results and count if available return $jsonData; } }
function getList() { $this->getInitedList(); if (is_null($this->per_page)) { return $this->model->get(); } return $this->model->paginate($this->per_page); }
/** * Gets results from prepared query * * @return null */ private function getResult() { $this->result_object = $this->query->get(); if ($this->query_type == 'builder') { $this->result_array = array_map(function ($object) { return (array) $object; }, $this->result_object); } else { $this->result_array = array_map(function ($object) { return (array) $object; }, $this->result_object->toArray()); } }