예제 #1
0
 /**
  * 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;
 }