/** * Process Query * * Converts a query result into an array of objects. * Also updates this object * * @ignore * @param CI_DB_result $query */ protected function _process_query($query) { if ($query->num_rows() > 0) { // Populate all with records as objects $this->all = array(); $this->_to_object($this, $query->row()); // don't bother recreating the first item. $index = $this->all_array_uses_ids && isset($this->id) ? $this->id : 0; $this->all[$index] = $this->get_clone(); if ($query->num_rows() > 1) { $model = get_class($this); $first = TRUE; foreach ($query->result() as $row) { if ($first) { $first = FALSE; continue; } $item = new $model(); $this->_to_object($item, $row); if ($this->all_array_uses_ids && isset($item->id)) { $this->all[$item->id] = $item; } else { $this->all[] = $item; } } } // remove instantiations $this->_instantiations = NULL; // free large queries if ($query->num_rows() > $this->free_result_threshold) { $query->free_result(); } } else { // Refresh stored values is called by _to_object normally $this->_refresh_stored_values(); } }