On this page
CActiveDataProvider
| Package | system.web |
|---|---|
| Inheritance | class CActiveDataProvider » CDataProvider » CComponent |
| Implements | IDataProvider |
| Since | 1.1 |
| Source Code | 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
Public Properties
| Property | Type | Description | Defined By |
|---|---|---|---|
| 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 |
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __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 |
Protected Methods
| Method | Description | Defined By |
|---|---|---|
| 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 |
Property Details
countCriteria property (available since v1.1.14)
public CDbCriteria getCountCriteria()
public void setCountCriteria(CDbCriteria|array $value)
Returns the count query criteria.
criteria property
public CDbCriteria getCriteria()
public void setCriteria(CDbCriteria|array $value)
Returns the query criteria.
keyAttribute property
public string $keyAttribute;
the name of key attribute for modelClass. If not set, it means the primary key of the corresponding database table will be used.
model property (available since v1.1.3)
public CActiveRecord $model;
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().
modelClass property
public string $modelClass;
the primary ActiveRecord class name. The getData() method will return a list of objects of this class.
sort property
public CSort getSort(string $className='CSort')
public void setSort(mixed $value)
Returns the sorting object.
Method Details
__construct() method
|
||
| $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.
calculateTotalItemCount() method
|
||
| {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.
fetchData() method
|
||
| {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.
fetchKeys() method
|
||
| {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.
getCountCriteria() method (available since v1.1.14)
|
||
| {return} | CDbCriteria | the count query criteria. |
public function getCountCriteria()
{
if($this->_countCriteria===null)
return $this->getCriteria();
return $this->_countCriteria;
}
Returns the count query criteria.
getCriteria() method
|
||
| {return} | CDbCriteria | the query criteria |
public function getCriteria()
{
if($this->_criteria===null)
$this->_criteria=new CDbCriteria;
return $this->_criteria;
}
Returns the query criteria.
getModel() method (available since v1.1.14)
|
||
| $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.
getSort() method
|
||
| $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.
setCountCriteria() method (available since v1.1.14)
|
||
| $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.
setCriteria() method
|
||
| $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.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CActiveDataProvider