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
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.
calculateTotalItemCount() method
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.
fetchData() method
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.
fetchKeys() method
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.
getCountCriteria() method (available since v1.1.14)
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.
getCriteria() method
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.
getModel() method (available since v1.1.14)
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.
getSort() method
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.
setCountCriteria() method (available since v1.1.14)
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.
setCriteria() method
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.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CActiveDataProvider