CActiveDataProvider

优质
小牛编辑
130浏览
2023-12-01
所有包 | 属性 | 方法
system.web
继承class CActiveDataProvider » CDataProvider » CComponent
实现IDataProvider
源自1.1
版本$Id: CActiveDataProvider.php 3426 2011-10-25 00:01:09Z alexander.makarow $
源码framework/web/CActiveDataProvider.php
CActiveDataProvider是基于ActiveRecord实现的一个数据数据提供者。

CActiveDataProvider为类modelClass的ActiveRecord对象 提供数据。它使用AR的CActiveRecord::findAll方法, 从数据库中检索信息。criteria属性能够用来 查询多种指定条件。

CActiveDataProvider的使用方法如下:
$dataProvider=new CActiveDataProvider('Post', array(  'criteria'=>array(      'condition'=>'status=1',      'order'=>'create_time DESC',      'with'=>array('author'),  ),  'pagination'=>array(      'pageSize'=>20,  ),
));
// $dataProvider->getData() will return a list of Post objects

公共属性

隐藏继承属性

属性类型描述定义在
criteriaCDbCriteria返回的查询条件。CActiveDataProvider
dataarray返回当前可用的数据项。CDataProvider
idstring返回所有数据提供者的唯一标识ID。CDataProvider
itemCountinteger返回当前页面的数据项数目。CDataProvider
keyAttributestringmodelClass的键值属性的名称。如果没有设置, 这意味着将使用相应的数据库表的主键。CActiveDataProvider
keysarray返回相关数据项的键。CDataProvider
modelCActiveRecordAR finder的实例(例如 Post::model())。 这个属性可以通过将finder的实例作为构造器的第一个参数来设置。 例如, Post::model()->published().CActiveDataProvider
modelClassstring主ActiveRecord的类名。 getData()方法将会返回这个类的对象的列表。CActiveDataProvider
paginationCPagination返回pagination对象。CDataProvider
sortCSort返回排序的对象。CActiveDataProvider
totalItemCountinteger返回所有数据项的总数。CDataProvider

公共方法

隐藏继承方法

方法描述定义在
__call()如果类中没有调的方法名,则调用这个方法。CComponent
__construct()构造方法。CActiveDataProvider
__get()返回一个属性值、一个事件处理程序列表或一个行为名称。CComponent
__isset()检查一个属性是否为null。CComponent
__set()设置一个组件的属性值。CComponent
__unset()设置一个组件的属性为null。CComponent
asa()返回这个名字的行为对象。CComponent
attachBehavior()附加一个行为到组件。CComponent
attachBehaviors()附加一个行为列表到组件。CComponent
attachEventHandler()为事件附加一个事件处理程序。CComponent
canGetProperty()确定属性是否可读。CComponent
canSetProperty()确定属性是否可写。CComponent
detachBehavior()从组件中分离一个行为。CComponent
detachBehaviors()从组件中分离所有行为。CComponent
detachEventHandler()分离一个存在的事件处理程序。CComponent
disableBehavior()禁用一个附加行为。CComponent
disableBehaviors()禁用组件附加的所有行为。CComponent
enableBehavior()启用一个附加行为。CComponent
enableBehaviors()启用组件附加的所有行为。CComponent
evaluateExpression()计算一个PHP表达式,或根据组件上下文执行回调。CComponent
getCriteria()返回的查询条件。CActiveDataProvider
getData()返回当前可用的数据项。CDataProvider
getEventHandlers()返回一个事件的附加处理程序列表。CComponent
getId()返回所有数据提供者的唯一标识ID。CDataProvider
getItemCount()返回当前页面的数据项数目。CDataProvider
getKeys()返回相关数据项的键。CDataProvider
getPagination()返回pagination对象。CDataProvider
getSort()返回排序的对象。CActiveDataProvider
getTotalItemCount()返回所有数据项的总数。CDataProvider
hasEvent()确定一个事件是否定义。CComponent
hasEventHandler()检查事件是否有附加的处理程序。CComponent
hasProperty()确定属性是否被定义。CComponent
raiseEvent()发起一个事件。CComponent
setCriteria()设置查询条件。CActiveDataProvider
setData()为provider设置数据项。CDataProvider
setId()设置provider的ID。CDataProvider
setKeys()为provider设置数据项的键。CDataProvider
setPagination()设置provider的pagination对象。CDataProvider
setSort()为数据提供者设置排序。CDataProvider
setTotalItemCount()设置所有数据项的总数。CDataProvider

受保护方法

隐藏继承方法

方法描述定义在
calculateTotalItemCount()计算所有数据项的总数。CActiveDataProvider
fetchData()从持久性数据存储中获取数据。CActiveDataProvider
fetchKeys()获取持久性数据存储的数据项键。CActiveDataProvider

属性详细

criteria 属性 public CDbCriteria getCriteria()
public void setCriteria(mixed $value)

返回的查询条件。

keyAttribute 属性 public string $keyAttribute;

modelClass的键值属性的名称。如果没有设置, 这意味着将使用相应的数据库表的主键。

model 属性 (可用自 v1.1.3) public CActiveRecord $model;

AR finder的实例(例如 Post::model())。 这个属性可以通过将finder的实例作为构造器的第一个参数来设置。 例如, Post::model()->published().

modelClass 属性 public string $modelClass;

主ActiveRecord的类名。 getData()方法将会返回这个类的对象的列表。

sort 属性 public CSort getSort()
public void setSort(mixed $value)

返回排序的对象。

方法详细

__construct() 方法
public void __construct(mixed $modelClass, array $config=array ( ))
$modelClassmixed模型的类(例如‘Post’)或者模型的finder实例 (例如Post::model()Post::model()->published())。
$configarray配置参数(name=>value)将作为这个类的初始属性值。
源码: framework/web/CActiveDataProvider.php#70 (显示) publicfunction__construct($modelClass,$config=array())
{
if(is_string($modelClass))
{
$this->modelClass=$modelClass;
$this->model=CActiveRecord::model($this->modelClass);
}
elseif($modelClassinstanceofCActiveRecord)
{
$this->modelClass=get_class($modelClass);
$this->model=$modelClass;
}
$this->setId($this->modelClass);
foreach($configas$key=>$value)
$this->$key=$value;
}

构造方法。

calculateTotalItemCount() 方法
protected integer calculateTotalItemCount()
{return}integer数据项的总数。
源码: framework/web/CActiveDataProvider.php#174 (显示) protectedfunctioncalculateTotalItemCount()
{
$baseCriteria=$this->model->getDbCriteria(false);
if($baseCriteria!==null)
$baseCriteria=clone$baseCriteria;
$count=$this->model->count($this->getCriteria());
$this->model->setDbCriteria($baseCriteria);
return$count;
}

计算所有数据项的总数。

fetchData() 方法
protected array fetchData()
{return}array数据项列表
源码: framework/web/CActiveDataProvider.php#123 (显示) protectedfunctionfetchData()
{
$criteria=clone$this->getCriteria();

if(($pagination=$this->getPagination())!==false)
{
$pagination->setItemCount($this->getTotalItemCount());
$pagination->applyLimit($criteria);
}

$baseCriteria=$this->model->getDbCriteria(false);

if(($sort=$this->getSort())!==false)
{
//setmodelcriteriasothatCSortcanuseitstablealiassetting
if($baseCriteria!==null)
{
$c=clone$baseCriteria;
$c->mergeWith($criteria);
$this->model->setDbCriteria($c);
}
else
$this->model->setDbCriteria($criteria);
$sort->applyOrder($criteria);
}

$this->model->setDbCriteria($baseCriteria!==null?clone$baseCriteria:null);
$data=$this->model->findAll($criteria);
$this->model->setDbCriteria($baseCriteria);//restoreoriginalcriteria
return$data;
}

从持久性数据存储中获取数据。

fetchKeys() 方法
protected array fetchKeys()
{return}array列表数据项的键。
源码: framework/web/CActiveDataProvider.php#159 (显示) protectedfunctionfetchKeys()
{
$keys=array();
foreach($this->getData()as$i=>$data)
{
$key=$this->keyAttribute===null?$data->getPrimaryKey():$data->{$this->keyAttribute};
$keys[$i]=is_array($key)?implode(',',$key):$key;
}
return$keys;
}

获取持久性数据存储的数据项键。

getCriteria() 方法
public CDbCriteria getCriteria()
{return}CDbCriteria查询条件
源码: framework/web/CActiveDataProvider.php#91 (显示) publicfunctiongetCriteria()
{
if($this->_criteria===null)
$this->_criteria=newCDbCriteria;
return$this->_criteria;
}

返回的查询条件。

getSort() 方法
public CSort getSort()
{return}CSort排序的对象。如果返回为false,这意味着排序被禁用。
源码: framework/web/CActiveDataProvider.php#112 (显示) publicfunctiongetSort()
{
if(($sort=parent::getSort())!==false)
$sort->modelClass=$this->modelClass;
return$sort;
}

返回排序的对象。

setCriteria() 方法
public void setCriteria(mixed $value)
$valuemixed查询条件。 这可以是一个CDbCriteria的对象或数组构成的查询条件。
源码: framework/web/CActiveDataProvider.php#103 (显示) publicfunctionsetCriteria($value)
{
$this->_criteria=$valueinstanceofCDbCriteria?$value:newCDbCriteria($value);
}

设置查询条件。