CActiveDataProvider
Package | system.web |
---|---|
Inheritance | class CActiveDataProvider » CDataProvider » CComponent |
Implements | IDataProvider |
Since | 1.1 |
Version | $Id: CActiveDataProvider.php 3426 2011-10-25 00:01:09Z alexander.makarow $ |
Source Code | framework/web/CActiveDataProvider.php |
CActiveDataProvider implements a data provider based on ActiveRecord.
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:
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'), ), 'pagination'=>array( 'pageSize'=>20, ), )); // $dataProvider->getData() will return a list of Post objects
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
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 | 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 |
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 |
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 |
Property Details
criteria
property
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
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. |
Source Code: framework/web/CActiveDataProvider.php#70 (show)
public function __construct($modelClass,$config=array())
{
if(is_string($modelClass))
{
$this->modelClass=$modelClass;
$this->model=CActiveRecord::model($this->modelClass);
}
else if($modelClass instanceof CActiveRecord)
{
$this->modelClass=get_class($modelClass);
$this->model=$modelClass;
}
$this->setId($this->modelClass);
foreach($config as $key=>$value)
$this->$key=$value;
}
Constructor.
calculateTotalItemCount()
method
protected integer calculateTotalItemCount()
| ||
{return} | integer | the total number of data items. |
Source Code: framework/web/CActiveDataProvider.php#174 (show)
protected function calculateTotalItemCount()
{
$baseCriteria=$this->model->getDbCriteria(false);
if($baseCriteria!==null)
$baseCriteria=clone $baseCriteria;
$count=$this->model->count($this->getCriteria());
$this->model->setDbCriteria($baseCriteria);
return $count;
}
Calculates the total number of data items.
fetchData()
method
protected array fetchData()
| ||
{return} | array | list of data items |
Source Code: framework/web/CActiveDataProvider.php#123 (show)
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. |
Source Code: framework/web/CActiveDataProvider.php#159 (show)
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.
getCriteria()
method
public CDbCriteria getCriteria()
| ||
{return} | CDbCriteria | the query criteria |
Source Code: framework/web/CActiveDataProvider.php#91 (show)
public function getCriteria()
{
if($this->_criteria===null)
$this->_criteria=new CDbCriteria;
return $this->_criteria;
}
Returns the query criteria.
getSort()
method
public CSort getSort()
| ||
{return} | CSort | the sorting object. If this is false, it means the sorting is disabled. |
Source Code: framework/web/CActiveDataProvider.php#112 (show)
public function getSort()
{
if(($sort=parent::getSort())!==false)
$sort->modelClass=$this->modelClass;
return $sort;
}
Returns the sorting object.
setCriteria()
method
public void setCriteria(mixed $value)
| ||
$value | mixed | the query criteria. This can be either a CDbCriteria object or an array representing the query criteria. |
Source Code: framework/web/CActiveDataProvider.php#103 (show)
public function setCriteria($value)
{
$this->_criteria=$value instanceof CDbCriteria ? $value : new CDbCriteria($value);
}
Sets the query criteria.