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.