/** * @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; } }
/** * @return integer */ public function count() { return $this->model->count(); }