Yii Framework v1.1.10 类参考
CActiveFinder
包 | system.db.ar |
---|---|
继承 | class CActiveFinder » CComponent |
源自 | 1.0 |
版本 | $Id: CActiveFinder.php 3562 2012-02-13 01:27:06Z qiang.xue $ |
源码 | framework/db/ar/CActiveFinder.php |
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
baseLimited | boolean | 基础模型有否限制或偏移。 在内部使用此属性 | CActiveFinder |
joinAll | boolean | 一次全部连接所有表。默认为false。 在内部使用此属性。 | CActiveFinder |
公共方法
属性详细
baseLimited
属性
public boolean $baseLimited;
基础模型有否限制或偏移。 在内部使用此属性
joinAll
属性
public boolean $joinAll;
一次全部连接所有表。默认为false。 在内部使用此属性。
方法详细
__construct()
方法
public void __construct(CActiveRecord $model, mixed $with)
| ||
$model | CActiveRecord | 初始化active finding process的model |
$with | mixed | 实时查询的关系名 |
源码: framework/db/ar/CActiveFinder.php#45 (显示)
public function __construct($model,$with)
{
$this->_builder=$model->getCommandBuilder();
$this->_joinTree=new CJoinElement($this,$model);
$this->buildJoinTree($this->_joinTree,$with);
}
构造函数。 一个join树的建立基于声明的活动记录之间的关系。
count()
方法
public string count(CDbCriteria $criteria)
| ||
$criteria | CDbCriteria | 查询条件 |
{return} | string |
源码: framework/db/ar/CActiveFinder.php#146 (显示)
public function count($criteria)
{
Yii::trace(get_class($this->_joinTree->model).'.count() eagerly','system.db.ar.CActiveRecord');
$this->joinAll=$criteria->together!==true;
$alias=$criteria->alias===null ? 't' : $criteria->alias;
$this->_joinTree->tableAlias=$alias;
$this->_joinTree->rawTableAlias=$this->_builder->getSchema()->quoteTableName($alias);
$n=$this->_joinTree->count($criteria);
$this->destroyJoinTree();
return $n;
}
此方法在内部被调用。
findAllBySql()
方法
public CActiveRecord[] findAllBySql(string $sql, array $params=array (
))
| ||
$sql | string | SQL 语句 |
$params | array | 绑定 SQL 语句的参数 |
{return} | CActiveRecord[] |
源码: framework/db/ar/CActiveFinder.php#122 (显示)
public function findAllBySql($sql,$params=array())
{
Yii::trace(get_class($this->_joinTree->model).'.findAllBySql() eagerly','system.db.ar.CActiveRecord');
if(($rows=$this->_builder->createSqlCommand($sql,$params)->queryAll())!==array())
{
$baseRecords=$this->_joinTree->model->populateRecords($rows,false);
$this->_joinTree->beforeFind(false);
$this->_joinTree->findWithBase($baseRecords);
$this->_joinTree->afterFind();
$this->destroyJoinTree();
return $baseRecords;
}
else
{
$this->destroyJoinTree();
return array();
}
}
此方法在内部被调用。
findBySql()
方法
public CActiveRecord findBySql(string $sql, array $params=array (
))
| ||
$sql | string | SQL 语句 |
$params | array | 参数绑定到此 SQL 语句 |
{return} | CActiveRecord |
源码: framework/db/ar/CActiveFinder.php#100 (显示)
public function findBySql($sql,$params=array())
{
Yii::trace(get_class($this->_joinTree->model).'.findBySql() eagerly','system.db.ar.CActiveRecord');
if(($row=$this->_builder->createSqlCommand($sql,$params)->queryRow())!==false)
{
$baseRecord=$this->_joinTree->model->populateRecord($row,false);
$this->_joinTree->beforeFind(false);
$this->_joinTree->findWithBase($baseRecord);
$this->_joinTree->afterFind();
$this->destroyJoinTree();
return $baseRecord;
}
else
$this->destroyJoinTree();
}
此方法在内部被调用。
lazyFind()
方法
public void lazyFind(CActiveRecord $baseRecord)
| ||
$baseRecord | CActiveRecord | 要被载入的基本记录相关对象 |
源码: framework/db/ar/CActiveFinder.php#165 (显示)
public function lazyFind($baseRecord)
{
$this->_joinTree->lazyFind($baseRecord);
if(!empty($this->_joinTree->children))
{
$child=reset($this->_joinTree->children);
$child->afterFind();
}
$this->destroyJoinTree();
}
查找指定活动记录的相关对象。 该方法在内部被CActiveRecord触发,支持懒惰加载.
query()
方法
public mixed query(CDbCriteria $criteria, boolean $all=false)
| ||
$criteria | CDbCriteria | 该数据库条件 |
$all | boolean | 是否带回所有记录 |
{return} | mixed | 查询结果 |
源码: framework/db/ar/CActiveFinder.php#59 (显示)
public function query($criteria,$all=false)
{
$this->joinAll=$criteria->together===true;
$this->_joinTree->beforeFind(false);
if($criteria->alias!='')
{
$this->_joinTree->tableAlias=$criteria->alias;
$this->_joinTree->rawTableAlias=$this->_builder->getSchema()->quoteTableName($criteria->alias);
}
$this->_joinTree->find($criteria);
$this->_joinTree->afterFind();
if($all)
{
$result = array_values($this->_joinTree->records);
if ($criteria->index!==null)
{
$index=$criteria->index;
$array=array();
foreach($result as $object)
$array[$object->$index]=$object;
$result=$array;
}
}
else if(count($this->_joinTree->records))
$result = reset($this->_joinTree->records);
else
$result = null;
$this->destroyJoinTree();
return $result;
}
不要调用这个方法。 此方法在内部使用以执行关联查询。 基于给定的数据库条件。