CActiveDataProvider
包 | system.web |
---|---|
继承 | class CActiveDataProvider » CDataProvider » CComponent |
实现 | IDataProvider |
可用自 | 1.1 |
源码 | framework/web/CActiveDataProvider.php |
CActiveDataProvider provides data in terms of ActiveRecord objects which are of class modelClass. It uses the AR CActiveRecord::findAll method to retrieve the data from database. The criteria property can be used to specify various query options.
CActiveDataProvider may be used in the following way:
$dataProvider=new CActiveDataProvider('Post', array( 'criteria'=>array( 'condition'=>'status=1', 'order'=>'create_time DESC', 'with'=>array('author'), ), 'countCriteria'=>array( 'condition'=>'status=1', // 'order' and 'with' clauses have no meaning for the count query ), 'pagination'=>array( 'pageSize'=>20, ), )); // $dataProvider->getData() will return a list of Post objects
公共属性
属性 | 类型 | 描述 | 被定义在 |
---|---|---|---|
countCriteria | CDbCriteria | Returns the count query criteria. | CActiveDataProvider |
criteria | CDbCriteria | Returns the query criteria. | CActiveDataProvider |
data | array | Returns the data items currently available. | CDataProvider |
id | string | Returns the ID that uniquely identifies the data provider. | CDataProvider |
itemCount | integer | Returns the number of data items in the current page. | CDataProvider |
keyAttribute | string | the name of key attribute for modelClass. | CActiveDataProvider |
keys | array | Returns the key values associated with the data items. | CDataProvider |
model | CActiveRecord | the AR finder instance (eg Post::model() ). |
CActiveDataProvider |
modelClass | string | the primary ActiveRecord class name. | CActiveDataProvider |
pagination | CPagination|false | Returns the pagination object. | CDataProvider |
sort | CSort | Returns the sorting object. | CActiveDataProvider |
totalItemCount | integer | Returns the total number of data items. | CDataProvider |
公共方法
方法 | 描述 | 被定义在 |
---|---|---|
__call() | Calls the named method which is not a class method. | CComponent |
__construct() | Constructor. | CActiveDataProvider |
__get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent |
__isset() | Checks if a property value is null. | CComponent |
__set() | Sets value of a component property. | CComponent |
__unset() | Sets a component property to be null. | CComponent |
asa() | Returns the named behavior object. | CComponent |
attachBehavior() | Attaches a behavior to this component. | CComponent |
attachBehaviors() | Attaches a list of behaviors to the component. | CComponent |
attachEventHandler() | Attaches an event handler to an event. | CComponent |
canGetProperty() | Determines whether a property can be read. | CComponent |
canSetProperty() | Determines whether a property can be set. | CComponent |
detachBehavior() | Detaches a behavior from the component. | CComponent |
detachBehaviors() | Detaches all behaviors from the component. | CComponent |
detachEventHandler() | Detaches an existing event handler. | CComponent |
disableBehavior() | Disables an attached behavior. | CComponent |
disableBehaviors() | Disables all behaviors attached to this component. | CComponent |
enableBehavior() | Enables an attached behavior. | CComponent |
enableBehaviors() | Enables all behaviors attached to this component. | CComponent |
evaluateExpression() | Evaluates a PHP expression or callback under the context of this component. | CComponent |
getCountCriteria() | Returns the count query criteria. | CActiveDataProvider |
getCriteria() | Returns the query criteria. | CActiveDataProvider |
getData() | Returns the data items currently available. | CDataProvider |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
getId() | Returns the ID that uniquely identifies the data provider. | CDataProvider |
getItemCount() | Returns the number of data items in the current page. | CDataProvider |
getKeys() | Returns the key values associated with the data items. | CDataProvider |
getPagination() | Returns the pagination object. | CDataProvider |
getSort() | Returns the sorting object. | CActiveDataProvider |
getTotalItemCount() | Returns the total number of data items. | CDataProvider |
hasEvent() | Determines whether an event is defined. | CComponent |
hasEventHandler() | Checks whether the named event has attached handlers. | CComponent |
hasProperty() | Determines whether a property is defined. | CComponent |
raiseEvent() | Raises an event. | CComponent |
setCountCriteria() | Sets the count query criteria. | CActiveDataProvider |
setCriteria() | Sets the query criteria. | CActiveDataProvider |
setData() | Sets the data items for this provider. | CDataProvider |
setId() | Sets the provider ID. | CDataProvider |
setKeys() | Sets the data item keys for this provider. | CDataProvider |
setPagination() | Sets the pagination for this data provider. | CDataProvider |
setSort() | Sets the sorting for this data provider. | CDataProvider |
setTotalItemCount() | Sets the total number of data items. | CDataProvider |
受保护的方法
方法 | 描述 | 被定义在 |
---|---|---|
calculateTotalItemCount() | Calculates the total number of data items. | CActiveDataProvider |
fetchData() | Fetches the data from the persistent data storage. | CActiveDataProvider |
fetchKeys() | Fetches the data item keys from the persistent data storage. | CActiveDataProvider |
getModel() | Given active record class name returns new model instance. | CActiveDataProvider |
属性详情
Returns the count query criteria.
Returns the query criteria.
the name of key attribute for modelClass. If not set, it means the primary key of the corresponding database table will be used.
the AR finder instance (eg Post::model()
).
This property can be set by passing the finder instance as the first parameter
to the constructor. For example, Post::model()->published()
.
the primary ActiveRecord class name. The getData() method will return a list of objects of this class.
Returns the sorting object.
方法详情
public void __construct(mixed $modelClass, array $config=array (
))
| ||
$modelClass | mixed | the model class (e.g. 'Post') or the model finder instance
(e.g. Post::model() , Post::model()->published() ). |
$config | array | configuration (name=>value) to be applied as the initial property values of this class. |
public function __construct($modelClass,$config=array())
{
if(is_string($modelClass))
{
$this->modelClass=$modelClass;
$this->model=$this->getModel($this->modelClass);
}
elseif($modelClass instanceof CActiveRecord)
{
$this->modelClass=get_class($modelClass);
$this->model=$modelClass;
}
$this->setId(CHtml::modelName($this->model));
foreach($config as $key=>$value)
$this->$key=$value;
}
Constructor.
protected integer calculateTotalItemCount()
| ||
{return} | integer | the total number of data items. |
protected function calculateTotalItemCount()
{
$baseCriteria=$this->model->getDbCriteria(false);
if($baseCriteria!==null)
$baseCriteria=clone $baseCriteria;
$count=$this->model->count($this->getCountCriteria());
$this->model->setDbCriteria($baseCriteria);
return $count;
}
Calculates the total number of data items.
protected array fetchData()
| ||
{return} | array | list of data items |
protected function fetchData()
{
$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)
{
// set model criteria so that CSort can use its table alias setting
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); // restore original criteria
return $data;
}
Fetches the data from the persistent data storage.
protected array fetchKeys()
| ||
{return} | array | list of data item keys. |
protected function fetchKeys()
{
$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;
}
Fetches the data item keys from the persistent data storage.
public CDbCriteria getCountCriteria()
| ||
{return} | CDbCriteria | the count query criteria. |
public function getCountCriteria()
{
if($this->_countCriteria===null)
return $this->getCriteria();
return $this->_countCriteria;
}
Returns the count query criteria.
public CDbCriteria getCriteria()
| ||
{return} | CDbCriteria | the query criteria |
public function getCriteria()
{
if($this->_criteria===null)
$this->_criteria=new CDbCriteria;
return $this->_criteria;
}
Returns the query criteria.
protected CActiveRecord getModel(string $className)
| ||
$className | string | active record class name. |
{return} | CActiveRecord | active record model instance. |
protected function getModel($className)
{
return CActiveRecord::model($className);
}
Given active record class name returns new model instance.
public CSort getSort(string $className='CSort')
| ||
$className | string | the sorting object class name. Parameter is available since version 1.1.13. |
{return} | CSort | the sorting object. If this is false, it means the sorting is disabled. |
public function getSort($className='CSort')
{
if(($sort=parent::getSort($className))!==false)
$sort->modelClass=$this->modelClass;
return $sort;
}
Returns the sorting object.
public void setCountCriteria(CDbCriteria|array $value)
| ||
$value | CDbCriteria|array | the count query criteria. This can be either a CDbCriteria object or an array representing the query criteria. |
public function setCountCriteria($value)
{
$this->_countCriteria=$value instanceof CDbCriteria ? $value : new CDbCriteria($value);
}
Sets the count query criteria.
public void setCriteria(CDbCriteria|array $value)
| ||
$value | CDbCriteria|array | the query criteria. This can be either a CDbCriteria object or an array representing the query criteria. |
public function setCriteria($value)
{
$this->_criteria=$value instanceof CDbCriteria ? $value : new CDbCriteria($value);
}
Sets the query criteria.