Example #1
0
 /**
  * 查询,并返回对象或对象集合
  *
  * @return QDB_ActiveRecord_Association_Coll|QDB_ActiveRecord_Abstract
  */
 protected function _queryObjects()
 {
     /**
      * 执行查询,获得一个查询句柄
      *
      * $this->_query_params[self::USED_LINKS] 是查询涉及到的关联(关联别名 => 关联对象)
      */
     $handle = $this->getQueryHandle();
     /* @var $handle QDB_Result_Abstract */
     $class_name = $this->_meta->class_name;
     $rowset = array();
     $this->_query_params[self::USED_LINKS] = $this->_query_params[self::USED_LINKS];
     $no_lazy_query = Q::normalize($this->_query_params[self::NON_LAZY_QUERY]);
     while ($row = $handle->fetchRow()) {
         $obj = new $class_name($row, QDB::FIELD, true);
         foreach ($no_lazy_query as $assoc) {
             $obj->{$assoc};
         }
         $rowset[] = $obj;
     }
     if (empty($rowset)) {
         // 没有查询到数据时,返回 Null 对象或空集合
         if (!$this->_parts[self::LIMIT_QUERY]) {
             return $this->_meta->newObject();
         } else {
             if ($this->_query_params[self::AS_COLL]) {
                 return new QDB_ActiveRecord_Association_Coll($this->_meta->class_name);
             } else {
                 return array();
             }
         }
     }
     if (!$this->_parts[self::LIMIT_QUERY]) {
         // 创建一个单独的对象
         return reset($rowset);
     } else {
         if ($this->_query_params[self::AS_COLL]) {
             return QDB_ActiveRecord_Association_Coll::createFromArray($rowset, $class_name);
         } else {
             return $rowset;
         }
     }
 }