CActiveDataProvider
| Пакет | system.web |
|---|---|
| Наследование | class CActiveDataProvider » CDataProvider » CComponent |
| Реализует | IDataProvider |
| С версии | 1.1 |
| Исходный код | framework/web/CActiveDataProvider.php |
CActiveDataProvider предоставляет данные в виде объектов ActiveRecord, которые являются экземплярами класса modelClass. Он использует метод AR CActiveRecord::findAll для получения данных из базы данных. Свойство criteria может использоваться для задания различных параметров запроса.
CActiveDataProvider может использоваться следующим образом:
$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 | Возвращает критерии запроса для подсчета. | CActiveDataProvider |
| criteria | CDbCriteria | Возвращает критерии запроса. | CActiveDataProvider |
| data | array | Возвращает элементы данных, которые в настоящее время доступны. | CDataProvider |
| id | string | Возвращает идентификатор, уникально определяющий поставщик данных. | CDataProvider |
| itemCount | integer | Возвращает количество элементов данных на текущей странице. | CDataProvider |
| keyAttribute | string | имя ключевого атрибута для modelClass. | CActiveDataProvider |
| keys | array | Возвращает значения ключей, связанные с элементами данных. | CDataProvider |
| model | CActiveRecord | экземпляр нахождения AR (например, Post::model()). | CActiveDataProvider |
| modelClass | string | имя основного класса ActiveRecord. | CActiveDataProvider |
| pagination | CPagination|false | Возвращает объект постраничной навигации. | CDataProvider |
| sort | CSort | Возвращает объект сортировки. | CActiveDataProvider |
| totalItemCount | integer | Возвращает общее количество элементов данных. | CDataProvider |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | CComponent |
| __construct() | Конструктор. | CActiveDataProvider |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение по его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства нулевым. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в значение null. | CComponent |
| asa() | Возвращает объект поведения по имени. | CComponent |
| attachBehavior() | Присоединяет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик событий к событию. | CComponent |
| canGetProperty() | Определяет, можно ли прочитать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает присоединенное поведение. | CComponent |
| disableBehaviors() | Отключает все присоединённые поведения к этому компоненту. | CComponent |
| enableBehavior() | Включает присоединённое поведение. | CComponent |
| enableBehaviors() | Включает все присоединенные к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет выражение PHP или обратный вызов в контексте этого компонента. | CComponent |
| getCountCriteria() | Возвращает критерии запроса подсчета. | CActiveDataProvider |
| getCriteria() | Возвращает критерии запроса. | CActiveDataProvider |
| getData() | Возвращает элементы данных, которые в данный момент доступны. | CDataProvider |
| getEventHandlers() | Возвращает список присоединённых обработчиков событий для события. | CComponent |
| getId() | Возвращает ID, уникально идентифицирующий поставщик данных. | CDataProvider |
| getItemCount() | Возвращает количество элементов данных на текущей странице. | CDataProvider |
| getKeys() | Возвращает значения ключей, связанные с элементами данных. | CDataProvider |
| getPagination() | Возвращает объект постраничной навигации. | CDataProvider |
| getSort() | Возвращает объект сортировки. | CActiveDataProvider |
| getTotalItemCount() | Возвращает общее количество элементов данных. | CDataProvider |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли присоединенные обработчики для указанного события. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| raiseEvent() | Вызывает событие. | CComponent |
| setCountCriteria() | Устанавливает критерии запроса подсчета. | CActiveDataProvider |
| setCriteria() | Устанавливает критерии запроса. | CActiveDataProvider |
| setData() | Устанавливает элементы данных для этого поставщика. | CDataProvider |
| setId() | Устанавливает идентификатор поставщика. | CDataProvider |
| setKeys() | Устанавливает ключи элементов данных для этого поставщика. | CDataProvider |
| setPagination() | Устанавливает постраничную навигацию для этого поставщика данных. | CDataProvider |
| setSort() | Устанавливает сортировку для этого поставщика данных. | CDataProvider |
| setTotalItemCount() | Устанавливает общее количество элементов данных. | CDataProvider |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| calculateTotalItemCount() | Вычисляет общее количество элементов данных. | CActiveDataProvider |
| fetchData() | Извлекает данные из постоянного хранилища данных. | CActiveDataProvider |
| fetchKeys() | Извлекает ключи элементов данных из постоянного хранилища данных. | CActiveDataProvider |
| getModel() | Возвращает новый экземпляр модели по имени класса активной записи. | CActiveDataProvider |
Подробное описание свойств
countCriteria свойство (доступно с версии v1.1.14)
public CDbCriteria getCountCriteria()
public void setCountCriteria(CDbCriteria|array $value)
Возвращает критерии запроса подсчета.
criteria свойство
public CDbCriteria getCriteria()
public void setCriteria(CDbCriteria|array $value)
Возвращает критерии запроса.
keyAttribute свойство
public string $keyAttribute;
Имя атрибута ключа для modelClass. Если не задано, используется первичный ключ соответствующей таблицы базы данных.
model свойство (доступно с версии v1.1.3)
public CActiveRecord $model;
экземпляр нахождения AR (например, Post::model()). Это свойство можно установить, передав экземпляр нахождения в качестве первого параметра конструктору. Например, Post::model()->published().
modelClass свойство
public string $modelClass;
имя первичного класса ActiveRecord. Метод getData() вернет список объектов этого класса.
sort свойство
public CSort getSort(string $className='CSort')
public void setSort(mixed $value)
Возвращает объект сортировки.
Подробное описание методов
__construct() метод
public void __construct(mixed $modelClass, array $config=array ( )) | ||
| $modelClass | mixed | класс модели (например, 'Post') или экземпляр поиска модели (например, Post::model(), Post::model()->published()). |
| $config | array | конфигурация (имя=>значение), которая будет применена в качестве начальных значений свойств этого класса. |
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;
}
Конструктор.
calculateTotalItemCount() метод
protected integer calculateTotalItemCount() | ||
| {return} | integer | общее количество элементов данных. |
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;
}
Вычисляет общее количество элементов данных.
fetchData() метод
protected array fetchData() | ||
| {return} | array | список элементов данных |
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;
}
Извлекает данные из постоянного хранилища данных.
fetchKeys() метод
protected array fetchKeys() | ||
| {return} | array | список ключей элементов данных. |
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;
}
Извлекает ключи элементов данных из постоянного хранилища данных.
getCountCriteria() метод (доступен с версии v1.1.14)
public CDbCriteria getCountCriteria() | ||
| {return} | CDbCriteria | критерии запроса для подсчёта. |
public function getCountCriteria()
{
if($this->_countCriteria===null)
return $this->getCriteria();
return $this->_countCriteria;
}
Возвращает критерии запроса для подсчёта.
getCriteria() метод
public CDbCriteria getCriteria() | ||
| {return} | CDbCriteria | критерии запроса. |
public function getCriteria()
{
if($this->_criteria===null)
$this->_criteria=new CDbCriteria;
return $this->_criteria;
}
Возвращает критерии запроса.
getModel() метод (доступен с версии v1.1.14)
protected CActiveRecord getModel(string $className) | ||
| $className | string | имя класса активной записи. |
| {return} | CActiveRecord | экземпляр модели активной записи. |
protected function getModel($className)
{
return CActiveRecord::model($className);
}
Возвращает новый экземпляр модели на основе имени класса активной записи.
getSort() метод
public CSort getSort(string $className='CSort') | ||
| $className | string | имя класса объекта сортировки. Параметр доступен с версии 1.1.13. |
| {return} | CSort | объект сортировки. Если это false, значит сортировка отключена. |
public function getSort($className='CSort')
{
if(($sort=parent::getSort($className))!==false)
$sort->modelClass=$this->modelClass;
return $sort;
}
Возвращает объект сортировки.
setCountCriteria() метод (доступен с версии v1.1.14)
public void setCountCriteria(CDbCriteria|array $value) | ||
| $value | CDbCriteria|array | критерии запроса для подсчёта. Может быть объектом CDbCriteria или массивом, представляющим критерии запроса. |
public function setCountCriteria($value)
{
$this->_countCriteria=$value instanceof CDbCriteria ? $value : new CDbCriteria($value);
}
Устанавливает критерии запроса для подсчёта.
setCriteria() метод
public void setCriteria(CDbCriteria|array $value) | ||
| $value | CDbCriteria|array | критерии запроса. Может быть объектом CDbCriteria или массивом, представляющим критерии запроса. |
public function setCriteria($value)
{
$this->_criteria=$value instanceof CDbCriteria ? $value : new CDbCriteria($value);
}
Устанавливает критерии запроса.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CActiveDataProvider