/** * 查询,并返回对象或对象集合 * * @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; } } }