示例#1
0
 /**
  * Calls PDO query with PDO::FETCH_CLASS option;
  * @link http://ro1.php.net/pdo.query
  * @param string $statement
  * @param string $classname
  * @param array $params
  * @param array $ctorargs
  * @return array|null
  * @throws \PDOException
  */
 public function queryClass($statement, $classname, $params = array(), $ctorargs = array())
 {
     $start = microtime(true);
     $q = $statement . '';
     if (is_a($statement, ModelCondition::className())) {
         foreach ($statement->getJoinParams() as $k => $v) {
             $params[$k] = $v;
         }
     }
     $statement = $this->prepare($q);
     try {
         $statement->execute($params);
     } catch (\PDOException $e) {
         $this->error($e->getMessage(), array('File' => __FILE__, 'Line' => __LINE__ - 4, 'Query' => $q, 'Params' => $params, 'Trace' => $e->getTraceAsString()));
         return null;
     }
     $objects = array();
     while ($ob = $statement->fetchObject($classname, $ctorargs)) {
         $objects[] = $ob;
     }
     $this->debug($q, array('params' => $params, 'intoClass' => $classname, 'controllerArguments' => $ctorargs, 'rows' => count($objects), 'time' => microtime(true) - $start, 'dns' => $this->dns));
     return $objects;
 }