protected function _run()
{
$query = $this->_build_select();
$caching_enabled = self::$_config[$this->_connection_name]['caching'];
if ($caching_enabled) {
$cache_key = self::_create_cache_key($query, $this->_values);
$cached_result = self::_check_query_cache($cache_key, $this->_connection_name);
if ($cached_result !== false) {
$this->reset();
return $cached_result;
}
}
self::_execute($query, $this->_values, $this->_connection_name);
$statement = self::get_last_statement();
$rows = array();
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
$rows[] = $row;
}
if ($caching_enabled) {
self::_cache_query_result($cache_key, $rows, $this->_connection_name);
}
// reset Idiorm after executing the query
$this->reset();
return $rows;
}