Spec-Zone.ru › Yii 1.1

CSqlDataProvider

Пакет system.web
Наследование класс CSqlDataProvider » CDataProvider » CComponent
Реализует IDataProvider
С версии 1.1.4
Исходный код framework/web/CSqlDataProvider.php
CSqlDataProvider реализует поставщик данных, основанный на простом SQL-запросе.

CSqlDataProvider предоставляет данные в виде массивов, каждый из которых представляет строку результата запроса.

Как и другие поставщики данных, CSqlDataProvider также поддерживает сортировку и пагинацию. Это делается путем изменения заданного sql-запроса с помощью положений "ORDER BY" и "LIMIT". Вы можете настроить свойства sort и pagination, чтобы настроить поведение сортировки и пагинации.

CSqlDataProvider можно использовать следующим образом:
$count=Yii::app()->db->createCommand('SELECT COUNT(*) FROM tbl_user')->queryScalar();
$sql='SELECT * FROM tbl_user';
$dataProvider=new CSqlDataProvider($sql, array(
    'totalItemCount'=>$count,
    'sort'=>array(
        'attributes'=>array(
             'id', 'username', 'email',
        ),
    ),
    'pagination'=>array(
        'pageSize'=>10,
    ),
));
// $dataProvider->getData() will return a list of arrays.


Примечание: если вы хотите использовать функцию пагинации, вы должны настроить свойство totalItemCount на общее количество строк (без пагинации). А если вы хотите использовать функцию сортировки, вы должны настроить свойство sort, чтобы поставщик знал, по каким столбцам можно сортировать.

Свойства публичного доступа

Свойство Тип Описание Определено
data массив Возвращает элементы данных, доступные в данный момент. CDataProvider
db CDbConnection соединение с базой данных, которое должно использоваться в запросах. CSqlDataProvider
id строка Возвращает идентификатор, который однозначно идентифицирует поставщик данных. CDataProvider
itemCount целое число Возвращает количество элементов данных на текущей странице. CDataProvider
keyField строка название ключевого поля. CSqlDataProvider
keys массив Возвращает значения ключей, связанные с элементами данных. CDataProvider
pagination CPagination|false Возвращает объект пагинации. CDataProvider
params массив параметры (имя=>значение), которые должны быть привязаны к SQL-запросу. CSqlDataProvider
sort CSort|false Возвращает объект сортировки. CDataProvider
sql строка|CDbCommand SQL-запрос, который должен использоваться для извлечения строк данных. CSqlDataProvider
totalItemCount целое число Возвращает общее количество элементов данных. CDataProvider

Общедоступные методы

Метод Описание Определено в
__call() Вызывает метод с указанным именем, который не является методом класса. CComponent
__construct() Конструктор. CSqlDataProvider
__get() Возвращает значение свойства, список обработчиков событий или поведение по его имени. CComponent
__isset() Проверяет, является ли значение свойства null. 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
getData() Возвращает доступные в настоящее время элементы данных. CDataProvider
getEventHandlers() Возвращает список прикреплённых обработчиков события для события. CComponent
getId() Возвращает ID, уникально идентифицирующий поставщик данных. CDataProvider
getItemCount() Возвращает количество элементов данных на текущей странице. CDataProvider
getKeys() Возвращает значения ключей, связанные с элементами данных. CDataProvider
getPagination() Возвращает объект постраничной навигации. CDataProvider
getSort() Возвращает объект сортировки. CDataProvider
getTotalItemCount() Возвращает общее количество элементов данных. CDataProvider
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли прикреплённые обработчики для указанного события. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
raiseEvent() Вызывает событие. CComponent
setData() Устанавливает элементы данных для этого поставщика. CDataProvider
setId() Устанавливает идентификатор поставщика. CDataProvider
setKeys() Устанавливает ключи элементов данных для этого поставщика. CDataProvider
setPagination() Устанавливает постраничную навигацию для этого поставщика данных. CDataProvider
setSort() Устанавливает сортировку для этого поставщика данных. CDataProvider
setTotalItemCount() Устанавливает общее количество элементов данных. CDataProvider

Защищённые методы

Метод Описание Определено в
calculateTotalItemCount() Вычисляет общее количество элементов данных. CSqlDataProvider
fetchData() Извлекает данные из постоянного хранилища данных. CSqlDataProvider
fetchKeys() Извлекает ключи элементов данных из постоянного хранилища данных. CSqlDataProvider

Подробное описание свойств

db свойство

public CDbConnection $db;

соединение с базой данных, которое будет использоваться в запросах. По умолчанию null, что означает использование Yii::app()->db.

keyField свойство

public string $keyField;

имя поля ключа. По умолчанию 'id'.

params свойство

public array $params;

параметры (имя=>значение), которые будут связаны с SQL-запросом.

sql свойство

public string|CDbCommand $sql;

SQL-запрос, который будет использоваться для извлечения строк данных. С версии 1.1.13 также может быть экземпляром CDbCommand.

Подробное описание методов

__construct() метод

public void __construct(string|CDbCommand $sql, array $config=array ( ))
$sql string|CDbCommand SQL-запрос, который будет использоваться для извлечения строк данных. С версии 1.1.13 также может быть экземпляром CDbCommand.
$config array настройка (имя=>значение), которая будет применена как начальные значения свойств этого класса.
Исходный код: framework/web/CSqlDataProvider.php#64 (показать)
public function __construct($sql,$config=array())
{
    
$this->sql=$sql;
    foreach(
$config as $key=>$value)
        
$this->$key=$value;
}

Конструктор.

calculateTotalItemCount() метод

protected integer calculateTotalItemCount()
{return} integer общее количество элементов данных.
Исходный код: framework/web/CSqlDataProvider.php#138 (показать)
protected function calculateTotalItemCount()
{
    return 
0;
}

Вычисляет общее количество элементов данных. Этот метод вызывается при вызове getTotalItemCount() и если totalItemCount ранее не был задан. Реализация по умолчанию просто возвращает 0. Вы можете переопределить этот метод, чтобы вернуть точное количество элементов данных.

fetchData() метод

protected array fetchData()
{return} массив список элементов данных
Исходный код: framework/web/CSqlDataProvider.php#75 (показать)
protected function fetchData()
{
    if(!(
$this->sql instanceof CDbCommand))
    {
        
$db=$this->db===null ? Yii::app()->db : $this->db;
        
$command=$db->createCommand($this->sql);
    }
    else
        
$command=clone $this->sql;

    if((
$sort=$this->getSort())!==false)
    {
        
$order=$sort->getOrderBy();
        if(!empty(
$order))
        {
            if(
preg_match('/\s+order\s+by\s+[\w\s,\.]+$/i',$command->text))
                
$command->text.=', '.$order;
            else
                
$command->text.=' ORDER BY '.$order;
        }
    }

    if((
$pagination=$this->getPagination())!==false)
    {
        
$pagination->setItemCount($this->getTotalItemCount());
        
$limit=$pagination->getLimit();
        
$offset=$pagination->getOffset();
        
$command->text=$command->getConnection()->getCommandBuilder()->applyLimit($command->text,$limit,$offset);
    }

    foreach(
$this->params as $name=>$value)
        
$command->bindValue($name,$value);

    return 
$command->queryAll();
}

Извлекает данные из постоянного хранилища данных.

fetchKeys() метод

protected array fetchKeys()
{return} массив список ключей элементов данных.
Исходный код: framework/web/CSqlDataProvider.php#115 (показать)
protected function fetchKeys()
{
    
$keys=array();
    if(
$data=$this->getData())
    {
        if(
is_object(reset($data)))
            foreach(
$data as $i=>$item)
                
$keys[$i]=$item->{$this->keyField};
        else
            foreach(
$data as $i=>$item)
                
$keys[$i]=$item[$this->keyField];
    }
    return 
$keys;
}

Извлекает ключи элементов данных из постоянного хранилища данных.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CSqlDataProvider

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API