/** * Execute an SQL statement & get all records as hydrated objects. * * @access public * @param string $sql * @param integer $return * @return mixed */ public static function sql($sql, $return = SimpleOrm::FETCH_MANY) { // shortcuts $sql = str_replace(array(':database', ':table', ':pk'), array(self::getDatabaseName(), self::getTableName(), self::getTablePk()), $sql); self::$lastQuery = $sql; // execute $result = self::getConnection()->query($sql); if (!$result) { throw new \Exception(sprintf('Unable to execute SQL statement. %s', self::getConnection()->error)); } if ($return === SimpleOrm::FETCH_NONE) { return; } $ret = array(); while ($row = $result->fetch_assoc()) { $ret[] = call_user_func_array(array(get_called_class(), 'hydrate'), array($row)); } $result->close(); // return one if requested if ($return === SimpleOrm::FETCH_ONE) { $ret = isset($ret[0]) ? $ret[0] : null; } return $ret; }