Spec-Zone.ru › Yii 1.1

CDbConnection

Пакет system.db
Наследование класс CDbConnection » CApplicationComponent » CComponent
Реализует IApplicationComponent
С версии 1.0
Исходный код framework/db/CDbConnection.php
CDbConnection представляет соединение с базой данных.

CDbConnection работает вместе с CDbCommand, CDbDataReader и CDbTransaction, предоставляя доступ к данным различных СУБД с помощью общего набора API. Они являются тонким оболочкой расширения PHP PDO.

Для установления соединения, установите active в true после указания connectionString, username и password.

Следующий пример демонстрирует создание экземпляра CDbConnection и установление фактического соединения:
$connection=new CDbConnection($dsn,$username,$password);
$connection->active=true;


После установления соединения с базой данных, можно выполнить SQL-запрос, как показано ниже:
$command=$connection->createCommand($sqlStatement);
$command->execute();   // a non-query SQL statement execution
// or execute an SQL query and fetch the result set
$reader=$command->query();

// each $row is an array representing a row of data
foreach($reader as $row) ...


Можно выполнить подготовленный SQL-запрос и привязать параметры к подготовленному SQL:
$command=$connection->createCommand($sqlStatement);
$command->bindParam($name1,$value1);
$command->bindParam($name2,$value2);
$command->execute();


Для использования транзакций, выполните следующее:
$transaction=$connection->beginTransaction();
try
{
   $connection->createCommand($sql1)->execute();
   $connection->createCommand($sql2)->execute();
   //.... other SQL executions
   $transaction->commit();
}
catch(Exception $e)
{
   $transaction->rollback();
}


CDbConnection также предоставляет набор методов для поддержки установки и запроса определённых атрибутов СУБД, таких как nullConversion.

Так как CDbConnection реализует интерфейс IApplicationComponent, его можно использовать как компонент приложения и настроить в конфигурации приложения, как показано ниже,
array(
    'components'=>array(
        'db'=>array(
            'class'=>'CDbConnection',
            'connectionString'=>'sqlite:path/to/dbfile',
        ),
    ),
)


Используйте свойство driverName, если вы хотите принудительно заставить соединение с базой данных использовать определённый драйвер по заданному имени, игнорируя то, что было установлено в свойстве connectionString. Это может быть полезно при работе с подключениями ODBC. Пример кода:

'db'=>array(
    'class'=>'CDbConnection',
    'driverName'=>'mysql',
    'connectionString'=>'odbc:Driver={MySQL};Server=127.0.0.1;Database=test',
    'username'=>'',
    'password'=>'',
),

Свойства public

Свойство Тип Описание Определено
active boolean Возвращает, установлено ли соединение с базой данных. CDbConnection
attributes array Возвращает атрибуты, которые были ранее явно установлены для соединения с базой данных. CDbConnection
autoCommit boolean Возвращает, будет ли автоматически подтверждаться создание или обновление записи в базе данных. CDbConnection
autoConnect boolean указывает, должно ли соединение с базой данных автоматически устанавливаться при инициализации компонента. CDbConnection
behaviors array поведения, которые должны быть присоединены к этому компоненту. CApplicationComponent
charset string кодировка символов, используемая для подключения к базе данных. CDbConnection
clientVersion string Возвращает информацию о версии драйвера базы данных. CDbConnection
columnCase mixed Возвращает регистр имён столбцов CDbConnection
commandBuilder CDbCommandBuilder Возвращает создатель команд SQL для текущего соединения с базой данных. CDbConnection
connectionStatus string Возвращает статус соединения. CDbConnection
connectionString string Имя источника данных (DSN), содержащее информацию, необходимую для подключения к базе данных. CDbConnection
currentTransaction CDbTransaction Возвращает текущую активную транзакцию. CDbConnection
driverMap array отображение между драйвером PDO и именем класса схемы. CDbConnection
driverName string Возвращает имя драйвера базы данных. CDbConnection
emulatePrepare boolean указывает, следует ли включить эмуляцию prepare. CDbConnection
enableParamLogging boolean указывает, нужно ли регистрировать значения, привязанные к подготовленному SQL-запросу. CDbConnection
enableProfiling boolean указывает, следует ли включить профилирование выполняемых SQL-запросов. CDbConnection
initSQLs array список SQL-запросов, которые должны быть выполнены сразу после установления соединения с базой данных. CDbConnection
isInitialized boolean Проверяет, был ли инициализирован этот компонент приложения. CApplicationComponent
lastInsertID string Возвращает идентификатор последней вставленной строки или последовательности значений. CDbConnection
nullConversion mixed Возвращает способ преобразования NULL и пустых строк. CDbConnection
password string пароль для установления соединения с базой данных. CDbConnection
pdoClass string Пользовательский класс обёртки PDO. CDbConnection
pdoInstance PDO Возвращает экземпляр PDO. CDbConnection
persistent boolean Возвращает, является ли соединение постоянным или нет. CDbConnection
prefetch boolean Возвращает, выполняет ли соединение предварительную выборку данных. CDbConnection
queryCacheID string идентификатор компонента кэширования приложения, используемого для кэширования запросов. CDbConnection
queryCachingCount integer количество SQL-запросов, которые нужно кэшировать далее. CDbConnection
queryCachingDependency CCacheDependency|ICacheDependency зависимость, которая будет использоваться при сохранении результатов запроса в кэше. CDbConnection
queryCachingDuration integer количество секунд, в течение которого результаты запросов могут оставаться действительными в кэше. CDbConnection
schema CDbSchema Возвращает схему базы данных для текущего соединения CDbConnection
schemaCacheID string идентификатор компонента кэширования приложения, используемого для кэширования метаданных таблиц. CDbConnection
schemaCachingDuration integer количество секунд, в течение которого метаданные таблиц могут оставаться действительными в кэше. CDbConnection
schemaCachingExclude array список таблиц, метаданные которых НЕ должны кэшироваться. CDbConnection
serverInfo string Возвращает информацию о сервере СУБД. CDbConnection
serverVersion string Возвращает информацию о версии сервера СУБД. CDbConnection
stats array Возвращает статистические результаты выполнения SQL-запросов. CDbConnection
tablePrefix string предпочтительный префикс для имён таблиц. CDbConnection
timeout integer Возвращает настройки таймаута для подключения. CDbConnection
username string имя пользователя для установления соединения с базой данных. CDbConnection

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

Метод Описание Определено в
__call() Вызывает метод с заданным именем, который не является методом класса. CComponent
__construct() Конструктор. CDbConnection
__get() Возвращает значение свойства, список обработчиков событий или поведение по его имени. CComponent
__isset() Проверяет, является ли значение свойства null. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__sleep() Закрывает соединение при сериализации. CDbConnection
__unset() Устанавливает свойство компонента в null. CComponent
asa() Возвращает объект поведения с заданным именем. CComponent
attachBehavior() Присоединяет поведение к этому компоненту. CComponent
attachBehaviors() Присоединяет список поведений к компоненту. CComponent
attachEventHandler() Присоединяет обработчик событий к событию. CComponent
beginTransaction() Начинает транзакцию. CDbConnection
cache() Устанавливает параметры кэширования запросов. CDbConnection
canGetProperty() Определяет, можно ли прочитать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
createCommand() Создаёт команду для выполнения. CDbConnection
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик событий. CComponent
disableBehavior() Отключает присоединённое поведение. CComponent
disableBehaviors() Отключает все присоединённые к этому компоненту поведения. CComponent
enableBehavior() Включает присоединённое поведение. CComponent
enableBehaviors() Включает все присоединённые к этому компоненту поведения. CComponent
evaluateExpression() Вычисляет PHP выражение или коллбэк в контексте этого компонента. CComponent
getActive() Возвращает, установлено ли соединение с БД. CDbConnection
getAttribute() Получает информацию о конкретном атрибуте соединения с БД. CDbConnection
getAttributes() Возвращает атрибуты, которые были явно установлены для соединения с БД. CDbConnection
getAutoCommit() Возвращает, будет ли автоматически сохраняться запись в БД при создании или обновлении. CDbConnection
getAvailableDrivers() Возвращает список доступных PDO драйверов. CDbConnection
getClientVersion() Возвращает информацию о версии драйвера БД. CDbConnection
getColumnCase() Возвращает регистр имён столбцов. CDbConnection
getCommandBuilder() Возвращает билдер SQL команд для текущего соединения с БД. CDbConnection
getConnectionStatus() Возвращает статус соединения. CDbConnection
getCurrentTransaction() Возвращает текущую активную транзакцию. CDbConnection
getDriverName() Возвращает имя драйвера БД. CDbConnection
getEventHandlers() Возвращает список присоединённых обработчиков событий для события. CComponent
getIsInitialized() Проверяет, был ли инициализирован компонент приложения. CApplicationComponent
getLastInsertID() Возвращает идентификатор последней вставленной строки или последовательности значений. CDbConnection
getNullConversion() Возвращает, как преобразуются null и пустые строки. CDbConnection
getPdoInstance() Возвращает экземпляр PDO. CDbConnection
getPdoType() Определяет тип PDO для указанного PHP типа. CDbConnection
getPersistent() Возвращает, является ли соединение постоянным. CDbConnection
getPrefetch() Возвращает, выполняет ли соединение предварительную выборку данных. CDbConnection
getSchema() Возвращает схему базы данных для текущего соединения. CDbConnection
getServerInfo() Возвращает информацию о сервере СУБД. CDbConnection
getServerVersion() Возвращает информацию о версии сервера СУБД. CDbConnection
getStats() Возвращает статистические результаты выполнения SQL запросов. CDbConnection
getTimeout() Возвращает параметры таймаута для соединения. CDbConnection
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли присоединённые обработчики для события с заданным именем. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
init() Инициализирует компонент. CDbConnection
quoteColumnName() Выделяет имя столбца для использования в запросе. CDbConnection
quoteTableName() Выделяет имя таблицы для использования в запросе. CDbConnection
quoteValue() Выделяет строковое значение для использования в запросе. CDbConnection
quoteValueWithType() Выделяет значение для использования в запросе, используя заданный тип. CDbConnection
raiseEvent() Вызывает событие. CComponent
setActive() Открывает или закрывает соединение с БД. CDbConnection
setAttribute() Устанавливает атрибут соединения с базой данных. CDbConnection
setAttributes() Устанавливает набор атрибутов для подключения к базе данных. CDbConnection
setAutoCommit() Устанавливает, будет ли автоматически выполняться подтверждение записи в БД при создании или обновлении. CDbConnection
setColumnCase() Устанавливает регистр имён столбцов. CDbConnection
setDriverName() Изменяет имя драйвера БД. Переопределяет значение, извлечённое из connectionString. CDbConnection
setNullConversion() Устанавливает способ преобразования значений NULL и пустых строк. CDbConnection
setPersistent() Устанавливает, является ли подключение постоянным. CDbConnection

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

Метод Описание Определён в
close() Закрывает текущее активное подключение к БД. CDbConnection
createPdoInstance() Создаёт экземпляр PDO. CDbConnection
initConnection() Инициализирует открытое подключение к БД. CDbConnection
open() Открывает подключение к БД, если оно не открыто. CDbConnection

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

active свойство

public boolean getActive()
public void setActive(boolean $value)

Возвращает значение, указывающее, установлено ли подключение к БД.

attributes свойство (доступно начиная с v1.1.7)

public array getAttributes()
public void setAttributes(array $values)

Возвращает атрибуты, ранее явно заданные для подключения к БД.

См. также

  • setAttributes

autoCommit свойство

public boolean getAutoCommit()
public void setAutoCommit(boolean $value)

Возвращает значение, указывающее, будет ли автоматически выполняться подтверждение записи в БД при создании или обновлении. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.

autoConnect свойство

public boolean $autoConnect;

указывает, должно ли подключение к базе данных автоматически устанавливаться при инициализации компонента. По умолчанию значение равно true. Обратите внимание, что это свойство эффективно только при использовании объекта CDbConnection в качестве компонента приложения.

charset свойство

public string $charset;

кодировка символов, используемая для подключения к базе данных. Свойство используется только для баз данных MySQL, MariaDB и PostgreSQL. По умолчанию значение равно null, что означает использование кодировки символов по умолчанию, указанной базой данных.

Обратите внимание, что если вы используете GBK или BIG5, настоятельно рекомендуется обновить PHP до версии 5.3.6+ и указать кодировку символов через DSN, например, 'mysql:dbname=mydatabase;host=127.0.0.1;charset=GBK;'.

clientVersion свойство только для чтения

public string getClientVersion()

Возвращает информацию о версии драйвера БД.

columnCase свойство

public mixed getColumnCase()
public void setColumnCase(mixed $value)

Возвращает регистр имён столбцов.

См. также

  • http://www.php.net/manual/en/pdo.setattribute.php

commandBuilder свойство только для чтения

public CDbCommandBuilder getCommandBuilder()

Возвращает билдер SQL-команд для текущего подключения к БД.

connectionStatus свойство только для чтения

public string getConnectionStatus()

Возвращает состояние подключения. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.

connectionString свойство

public string $connectionString;

Имя источника данных (DSN) содержит информацию, необходимую для подключения к базе данных.

См. также

  • Обратите внимание, что если вы используете GBK или BIG5, настоятельно рекомендуется обновить PHP до версии 5.3.6+ и указать кодировку символов через DSN, например, 'mysql:dbname=mydatabase;host=127.0.0.1;charset=GBK;'.

currentTransaction свойство только для чтения

public CDbTransaction getCurrentTransaction()

Возвращает текущую активную транзакцию.

driverMap свойство (доступно начиная с v1.1.6)

public array $driverMap;

сопоставление между драйвером PDO и именем класса схемы. Класс схемы можно указать с помощью псевдонима пути.

driverName свойство

public string getDriverName()
public void setDriverName(string $driverName)

Возвращает имя драйвера БД.

emulatePrepare свойство

public boolean $emulatePrepare;

указывает, нужно ли включить эмуляцию prepare. По умолчанию значение равно false, что означает, что PDO будет использовать встроенную поддержку prepare, если она доступна. Для некоторых баз данных (таких как MySQL) это может потребоваться установить в true, чтобы PDO мог эмулировать поддержку prepare, минуя неисправную встроенную поддержку prepare. Обратите внимание, что это свойство эффективно только для PHP 5.1.3 и выше. Значение по умолчанию равно null, что не изменит значение ATTR_EMULATE_PREPARES PDO.

enableParamLogging свойство

public boolean $enableParamLogging;

указывает, нужно ли регистрировать значения, привязанные к подготовленному SQL-запросу. По умолчанию значение равно false. Во время разработки можно установить это свойство в значение true, чтобы регистрировать значения параметров, привязанные к SQL-запросам, в целях отладки. Следует помнить, что регистрация значений параметров может быть дорогостоящей операцией и существенно повлиять на производительность приложения.

enableProfiling свойство

public boolean $enableProfiling;

указывает, нужно ли включить профилирование SQL-запросов, выполняемых. По умолчанию значение равно false. Это следует включать в основном во время разработки, чтобы определить узкие места в выполнении SQL-запросов.

initSQLs свойство (доступно начиная с v1.1.1)

public array $initSQLs;

список SQL-запросов, которые должны быть выполнены сразу после установления подключения к БД.

lastInsertID свойство только для чтения

public string getLastInsertID(string $sequenceName='')

Возвращает идентификатор последней вставленной строки или значения последовательности.

См. также

  • http://www.php.net/manual/en/function.PDO-lastInsertId.php

nullConversion свойство

public mixed getNullConversion()
public void setNullConversion(mixed $value)

Возвращает способ преобразования значений NULL и пустых строк.

См. также

  • http://www.php.net/manual/en/pdo.setattribute.php

password свойство

public string $password;

пароль для установления подключения к БД. По умолчанию пустая строка.

pdoClass свойство (доступно начиная с v1.1.8)

public string $pdoClass;

Пользовательский класс обёртки PDO.

pdoInstance свойство только для чтения

public PDO getPdoInstance()

Возвращает экземпляр PDO.

persistent свойство

public boolean getPersistent()
public void setPersistent(boolean $value)

Возвращает значение, указывающее, является ли подключение постоянным. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.

prefetch свойство только для чтения

public boolean getPrefetch()

Возвращает значение, указывающее, выполняет ли подключение предварительную загрузку данных.

queryCacheID свойство (доступно начиная с v1.1.7)

public string $queryCacheID;

идентификатор компонента кэширования приложения, используемого для кэширования запросов. По умолчанию 'cache', что относится к главному компоненту кэширования. Установите это свойство в false, если хотите отключить кэширование запросов.

queryCachingCount свойство (доступно начиная с v1.1.7)

public integer $queryCachingCount;

количество SQL-запросов, которые необходимо кэшировать. Если это 0, то даже при включённом кэшировании запросов ни один запрос не будет кэширован. Обратите внимание, что каждый раз после выполнения SQL-запроса (как на сервере БД, так и полученного из кэша запросов), это свойство уменьшается на 1 до 0.

queryCachingDependency свойство (доступно начиная с v1.1.7)

public CCacheDependency|ICacheDependency $queryCachingDependency;

зависимость, которая будет использоваться при сохранении результатов запросов в кэш.

См. также

  • queryCachingDuration

queryCachingDuration свойство (доступно начиная с v1.1.7)

public integer $queryCachingDuration;

количество секунд, в течение которых результаты запроса могут оставаться действительными в кэше. Используйте 0 или отрицательное значение, чтобы указать на то, что результаты запроса не должны кэшироваться (поведение по умолчанию).

Для включения кэширования запросов это свойство должно быть положительным целым числом, а queryCacheID должно указывать на действительный идентификатор компонента кэширования.

Метод cache() предоставляется в качестве удобного способа задания этого свойства и queryCachingDependency на лету.

См. также

  • кеш
  • зависимость кэширования запросов
  • идентификатор кэша запросов

схема свойство только для чтения

public CDbSchema getSchema()

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

schemaCacheID свойство

public string $schemaCacheID;

Идентификатор компонента кэширования, используемого для кэширования метаданных таблиц. По умолчанию равен 'cache', что относится к основному компоненту кэширования. Установите это свойство в false, если хотите отключить кэширование метаданных таблиц.

schemaCachingDuration свойство

public integer $schemaCachingDuration;

Количество секунд, в течение которого метаданные таблиц могут храниться в кэше. Используйте 0 или отрицательное значение, чтобы указать, что кэширование схемы отключено. Если значение больше 0 и основной кэш включен, метаданные таблиц будут кэшироваться.

См. также

  • schemaCachingExclude

schemaCachingExclude свойство

public array $schemaCachingExclude;

Список таблиц, метаданные которых не должны кэшироваться. По умолчанию пустой массив.

См. также

  • schemaCachingDuration

serverInfo свойство только для чтения

public string getServerInfo()

Возвращает информацию о сервере СУБД.

serverVersion свойство только для чтения

public string getServerVersion()

Возвращает информацию о версии сервера СУБД.

stats свойство только для чтения

public array getStats()

Возвращает статистические результаты выполнения SQL-запросов. Результаты включают количество выполненных SQL-запросов и общее время выполнения. Для использования этого метода необходимо установить enableProfiling в true.

tablePrefix свойство (доступно начиная с v1.1.0)

public string $tablePrefix;

Префикс по умолчанию для имён таблиц. По умолчанию null, что означает отсутствие префикса. Установив это свойство, любой токен, например '{{tableName}}' в CDbCommand::text, будет заменён на 'prefixTableName', где 'prefix' соответствует значению этого свойства.

timeout свойство только для чтения

public integer getTimeout()

Возвращает настройки таймаута для подключения.

username свойство

public string $username;

Имя пользователя для установления подключения к базе данных. По умолчанию пустая строка.

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

__construct() метод

public void __construct(string $dsn='', string $username='', string $password='')
$dsn string Имя источника данных (DSN), содержащее информацию для подключения к базе данных.
$username string Имя пользователя для строки DSN.
$password string Пароль для строки DSN.
Исходный код: framework/db/CDbConnection.php#287 (показать)
public function __construct($dsn='',$username='',$password='')
{
    
$this->connectionString=$dsn;
    
$this->username=$username;
    
$this->password=$password;
}

Конструктор. Обратите внимание, что подключение к базе данных не устанавливается при создании экземпляра этого подключения. Установите свойство active в true, чтобы установить подключение.

См. также

  • http://www.php.net/manual/en/function.PDO-construct.php

__sleep() метод

public array __sleep()
{return} массив
Исходный код: framework/db/CDbConnection.php#298 (показать)
public function __sleep()
{
    
$this->close();
    return 
array_keys(get_object_vars($this));
}

Закрывает подключение при сериализации.

beginTransaction() метод

public CDbTransaction beginTransaction()
{return} CDbTransaction инициализированная транзакция
Исходный код: framework/db/CDbConnection.php#518 (показать)
public function beginTransaction()
{
    
Yii::trace('Starting transaction','system.db.CDbConnection');
    
$this->setActive(true);
    
$this->_pdo->beginTransaction();
    return 
$this->_transaction=new CDbTransaction($this);
}

Начинает транзакцию.

cache() метод (доступно начиная с v1.1.7)

public static cache(integer $duration, CCacheDependency|ICacheDependency $dependency=NULL, integer $queryCount=1)
$duration целое число количество секунд, в течение которых результаты запроса могут храниться в кэше. Если это 0, кэширование отключено.
$dependency CCacheDependency|ICacheDependency зависимость, которая будет использоваться при сохранении результатов запроса в кэше.
$queryCount целое число количество SQL-запросов, которые должны быть кэшированы после вызова этого метода. По умолчанию 1, что означает, что следующий SQL-запрос будет кэширован.
{return} статика сам экземпляр подключения.
Исходный код: framework/db/CDbConnection.php#370 (показать)
public function cache($duration, $dependency=null, $queryCount=1)
{
    
$this->queryCachingDuration=$duration;
    
$this->queryCachingDependency=$dependency;
    
$this->queryCachingCount=$queryCount;
    return 
$this;
}

Устанавливает параметры кэширования запросов. Этот метод может использоваться для включения или отключения кэширования запросов. Установив параметр $duration в 0, кэширование запросов будет отключено. В противном случае результаты запросов новых SQL-запросов, которые будут выполнены после этого, будут сохранены в кэше и останутся действительными в течение указанного времени. Если тот же запрос выполняется снова, результат может быть получен из кэша напрямую, без фактического выполнения SQL-запроса.

close() метод

protected void close()
Исходный код: framework/db/CDbConnection.php#415 (показать)
protected function close()
{
    
Yii::trace('Closing DB connection','system.db.CDbConnection');
    
$this->_pdo=null;
    
$this->_active=false;
    
$this->_schema=null;
}

Закрывает активное подключение к базе данных. Не делает ничего, если подключение уже закрыто.

createCommand() метод

public CDbCommand createCommand(mixed $query=NULL)
$query смешанный тип SQL-запрос для выполнения. Это может быть строка, представляющая SQL-запрос, или массив, представляющий разные фрагменты SQL-запроса. Подробнее о передаче массива как запроса см. в CDbCommand::__construct. Если этот параметр не задан, необходимо вызывать методы билдера запросов CDbCommand для построения SQL-запроса.
{return} CDbCommand команда базы данных
Исходный код: framework/db/CDbConnection.php#494 (показать)
public function createCommand($query=null)
{
    
$this->setActive(true);
    return new 
CDbCommand($this,$query);
}

Создаёт команду для выполнения.

createPdoInstance() метод

protected PDO createPdoInstance()
{return} PDO экземпляр pdo
Исходный код: framework/db/CDbConnection.php#430 (показать)
protected function createPdoInstance()
{
    
$pdoClass=$this->pdoClass;
    if((
$driver=$this->getDriverName())!==null)
    {
        if(
$driver==='mssql' || $driver==='dblib')
            
$pdoClass='CMssqlPdoAdapter';
        elseif(
$driver==='sqlsrv')
            
$pdoClass='CMssqlSqlsrvPdoAdapter';
    }

    if(!
class_exists($pdoClass))
        throw new 
CDbException(Yii::t('yii','CDbConnection is unable to find PDO class "{className}". Make sure PDO is installed correctly.',
            array(
'{className}'=>$pdoClass)));

    @
$instance=new $pdoClass($this->connectionString,$this->username,$this->password,$this->_attributes);

    if(!
$instance)
        throw new 
CDbException(Yii::t('yii','CDbConnection failed to open the DB connection.'));

    return 
$instance;
}

Создаёт экземпляр PDO. Если в драйвере PDO отсутствуют некоторые функциональности, мы можем использовать адаптерский класс для их предоставления.

getActive() метод

public boolean getActive()
{return} boolean установлено ли подключение к базе данных
Исходный код: framework/db/CDbConnection.php#332 (показать)
public function getActive()
{
    return 
$this->_active;
}

Возвращает, установлено ли подключение к базе данных.

getAttribute() метод

public mixed getAttribute(integer $name)
$name целое число свойство, которое необходимо получить
{return} смешанный тип соответствующая информация о свойстве
Исходный код: framework/db/CDbConnection.php#812 (показать)
public function getAttribute($name)
{
    
$this->setActive(true);
    return 
$this->_pdo->getAttribute($name);
}

Получает информацию об атрибуте конкретного подключения к БД.

См. также

  • http://www.php.net/manual/en/function.PDO-getAttribute.php

getAttributes() метод (доступен с v1.1.7)

public array getAttributes()
{return} array атрибуты (имя=>значение), которые были явно заданы для подключения к БД.
Исходный код: framework/db/CDbConnection.php#838 (показать)
public function getAttributes()
{
    return 
$this->_attributes;
}

Возвращает атрибуты, которые были ранее явно заданы для подключения к БД.

См. также

  • setAttributes

getAutoCommit() метод

public boolean getAutoCommit()
{return} boolean будет ли автоматически выполняться коммит при создании или обновлении записи в БД.
Исходный код: framework/db/CDbConnection.php#690 (показать)
public function getAutoCommit()
{
    return 
$this->getAttribute(PDO::ATTR_AUTOCOMMIT);
}

Возвращает значение, указывающее, будет ли автоматически выполняться коммит при создании или обновлении записи в БД. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.

getAvailableDrivers() метод

public static array getAvailableDrivers()
{return} array список доступных драйверов PDO.
Исходный код: framework/db/CDbConnection.php#309 (показать)
public static function getAvailableDrivers()
{
    return 
PDO::getAvailableDrivers();
}

Возвращает список доступных драйверов PDO.

См. также

  • http://www.php.net/manual/en/function.PDO-getAvailableDrivers.php

getClientVersion() метод

public string getClientVersion()
{return} string информация о версии драйвера БД
Исходный код: framework/db/CDbConnection.php#755 (показать)
public function getClientVersion()
{
    return 
$this->getAttribute(PDO::ATTR_CLIENT_VERSION);
}

Возвращает информацию о версии драйвера БД.

getColumnCase() метод

public mixed getColumnCase()
{return} mixed регистр имён столбцов
Исходный код: framework/db/CDbConnection.php#650 (показать)
public function getColumnCase()
{
    return 
$this->getAttribute(PDO::ATTR_CASE);
}

Возвращает регистр имён столбцов

См. также

  • http://www.php.net/manual/en/pdo.setattribute.php

getCommandBuilder() метод

public CDbCommandBuilder getCommandBuilder()
{return} CDbCommandBuilder построитель команд
Исходный код: framework/db/CDbConnection.php#550 (показать)
public function getCommandBuilder()
{
    return 
$this->getSchema()->getCommandBuilder();
}

Возвращает построитель SQL-команд для текущего подключения к БД.

getConnectionStatus() метод

public string getConnectionStatus()
{return} string состояние подключения
Исходный код: framework/db/CDbConnection.php#765 (показать)
public function getConnectionStatus()
{
    return 
$this->getAttribute(PDO::ATTR_CONNECTION_STATUS);
}

Возвращает состояние подключения. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.

getCurrentTransaction() метод

public CDbTransaction getCurrentTransaction()
{return} CDbTransaction текущая активная транзакция. Null, если нет активной транзакции.
Исходный код: framework/db/CDbConnection.php#504 (показать)
public function getCurrentTransaction()
{
    if(
$this->_transaction!==null)
    {
        if(
$this->_transaction->getActive())
            return 
$this->_transaction;
    }
    return 
null;
}

Возвращает текущую активную транзакцию.

getDriverName() метод

public string getDriverName()
{return} string имя драйвера БД.
Исходный код: framework/db/CDbConnection.php#729 (показать)
public function getDriverName()
{
    if(
$this->_driverName!==null)
        return 
$this->_driverName;
    elseif((
$pos=strpos($this->connectionString,':'))!==false)
        return 
$this->_driverName=strtolower(substr($this->connectionString,0,$pos));
    
//return $this->getAttribute(PDO::ATTR_DRIVER_NAME);
}

Возвращает имя драйвера БД.

getLastInsertID() метод

public string getLastInsertID(string $sequenceName='')
$sequenceName string имя объекта последовательности (требуется некоторыми СУБД)
{return} string ID последней вставленной строки или последнее значение, полученное из объекта последовательности.
Исходный код: framework/db/CDbConnection.php#561 (показать)
public function getLastInsertID($sequenceName='')
{
    
$this->setActive(true);
    return 
$this->_pdo->lastInsertId($sequenceName);
}

Возвращает ID последней вставленной строки или значение последовательности.

См. также

  • http://www.php.net/manual/en/function.PDO-lastInsertId.php

getNullConversion() метод

public mixed getNullConversion()
{return} mixed как преобразуются null и пустые строки
Исходный код: framework/db/CDbConnection.php#670 (показать)
public function getNullConversion()
{
    return 
$this->getAttribute(PDO::ATTR_ORACLE_NULLS);
}

Возвращает способ преобразования null и пустых строк.

См. также

  • http://www.php.net/manual/en/pdo.setattribute.php

getPdoInstance() метод

public PDO getPdoInstance()
{return} PDO экземпляр PDO, null, если соединение ещё не установлено
Исходный код: framework/db/CDbConnection.php#481 (показать)
public function getPdoInstance()
{
    return 
$this->_pdo;
}

Возвращает экземпляр PDO.

getPdoType() метод

public integer getPdoType(string $type)
$type string Тип PHP (получен с помощью вызова gettype()).
{return} integer соответствующий тип PDO
Исходный код: framework/db/CDbConnection.php#632 (показать)
public function getPdoType($type)
{
    static 
$map=array
    (
        
'boolean'=>PDO::PARAM_BOOL,
        
'integer'=>PDO::PARAM_INT,
        
'string'=>PDO::PARAM_STR,
        
'resource'=>PDO::PARAM_LOB,
        
'NULL'=>PDO::PARAM_NULL,
    );
    return isset(
$map[$type]) ? $map[$type] : PDO::PARAM_STR;
}

Определяет тип PDO для указанного типа PHP.

getPersistent() метод

public boolean getPersistent()
{return} boolean является ли подключение персистентным
Исходный код: framework/db/CDbConnection.php#710 (показать)
public function getPersistent()
{
    return 
$this->getAttribute(PDO::ATTR_PERSISTENT);
}

Возвращает значение, указывающее, является ли подключение персистентным. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.

getPrefetch() метод

public boolean getPrefetch()
{return} boolean указывает, выполняет ли подключение предварительную загрузку данных
Source Code: framework/db/CDbConnection.php#774 (show)
public function getPrefetch()
{
    return 
$this->getAttribute(PDO::ATTR_PREFETCH);
}

Возвращает значение, указывающее, выполняет ли подключение предварительную загрузку данных.

getSchema() method

public CDbSchema getSchema()
{return} CDbSchema схема базы данных для текущего подключения
Source Code: framework/db/CDbConnection.php#531 (show)
public function getSchema()
{
    if(
$this->_schema!==null)
        return 
$this->_schema;
    else
    {
        
$driver=$this->getDriverName();
        if(isset(
$this->driverMap[$driver]))
            return 
$this->_schema=Yii::createComponent($this->driverMap[$driver], $this);
        else
            throw new 
CDbException(Yii::t('yii','CDbConnection does not support reading schema for {driver} database.',
                array(
'{driver}'=>$driver)));
    }
}

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

getServerInfo() method

public string getServerInfo()
{return} string информация о сервере СУБД
Source Code: framework/db/CDbConnection.php#783 (show)
public function getServerInfo()
{
    return 
$this->getAttribute(PDO::ATTR_SERVER_INFO);
}

Возвращает информацию о сервере СУБД.

getServerVersion() method

public string getServerVersion()
{return} string информация о версии сервера СУБД
Source Code: framework/db/CDbConnection.php#792 (show)
public function getServerVersion()
{
    return 
$this->getAttribute(PDO::ATTR_SERVER_VERSION);
}

Возвращает информацию о версии сервера СУБД.

getStats() method

public array getStats()
{return} array первый элемент — количество выполненных SQL-запросов, второй — общее время выполнения SQL-запросов.
Source Code: framework/db/CDbConnection.php#863 (show)
public function getStats()
{
    
$logger=Yii::getLogger();
    
$timings=$logger->getProfilingResults(null,'system.db.CDbCommand.query');
    
$count=count($timings);
    
$time=array_sum($timings);
    
$timings=$logger->getProfilingResults(null,'system.db.CDbCommand.execute');
    
$count+=count($timings);
    
$time+=array_sum($timings);
    return array(
$count,$time);
}

Возвращает статистические результаты выполнения SQL-запросов. Результаты включают количество выполненных SQL-запросов и общее затраченное время. Для использования этого метода необходимо установить enableProfiling в true.

getTimeout() method

public integer getTimeout()
{return} integer настройки таймаута для подключения
Source Code: framework/db/CDbConnection.php#801 (show)
public function getTimeout()
{
    return 
$this->getAttribute(PDO::ATTR_TIMEOUT);
}

Возвращает настройки таймаута для подключения.

init() method

public void init()
Source Code: framework/db/CDbConnection.php#321 (show)
public function init()
{
    
parent::init();
    if(
$this->autoConnect)
        
$this->setActive(true);
}

Инициализирует компонент. Этот метод требуется IApplicationComponent и вызывается приложением при использовании CDbConnection в качестве компонента приложения. При переопределении этого метода обязательно вызывайте родительскую реализацию, чтобы компонент мог быть помечен как инициализированный.

initConnection() method

protected void initConnection(PDO $pdo)
$pdo PDO экземпляр PDO
Source Code: framework/db/CDbConnection.php#459 (show)
protected function initConnection($pdo)
{
    
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    if(
$this->emulatePrepare!==null && constant('PDO::ATTR_EMULATE_PREPARES'))
        
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,$this->emulatePrepare);
    if(
$this->charset!==null)
    {
        
$driver=strtolower($pdo->getAttribute(PDO::ATTR_DRIVER_NAME));
        if(
in_array($driver,array('pgsql','mysql','mysqli')))
            
$pdo->exec('SET NAMES '.$pdo->quote($this->charset));
    }
    if(
$this->initSQLs!==null)
    {
        foreach(
$this->initSQLs as $sql)
            
$pdo->exec($sql);
    }
}

Инициализирует открытое подключение к базе данных. Этот метод вызывается сразу после создания подключения к базе данных. По умолчанию устанавливается кодировка для подключений к базам данных MySQL, MariaDB и PostgreSQL.

open() method

protected void open()
Source Code: framework/db/CDbConnection.php#382 (show)
protected function open()
{
    if(
$this->_pdo===null)
    {
        if(empty(
$this->connectionString))
            throw new 
CDbException('CDbConnection.connectionString cannot be empty.');
        try
        {
            
Yii::trace('Opening DB connection','system.db.CDbConnection');
            
$this->_pdo=$this->createPdoInstance();
            
$this->initConnection($this->_pdo);
            
$this->_active=true;
        }
        catch(
PDOException $e)
        {
            if(
YII_DEBUG)
            {
                throw new 
CDbException('CDbConnection failed to open the DB connection: '.
                    
$e->getMessage(),(int)$e->getCode(),$e->errorInfo);
            }
            else
            {
                
Yii::log($e->getMessage(),CLogger::LEVEL_ERROR,'exception.CDbException');
                throw new 
CDbException('CDbConnection failed to open the DB connection.',(int)$e->getCode(),$e->errorInfo);
            }
        }
    }
}

Открывает подключение к базе данных, если оно в данный момент не открыто.

quoteColumnName() method

public string quoteColumnName(string $name)
$name string имя столбца
{return} string правильно обрамленное имя столбца
Source Code: framework/db/CDbConnection.php#622 (show)
public function quoteColumnName($name)
{
    return 
$this->getSchema()->quoteColumnName($name);
}

Обрамляет имя столбца для использования в запросе. Если имя столбца содержит префикс, префикс также будет правильно обрамлён.

quoteTableName() method

public string quoteTableName(string $name)
$name string имя таблицы
{return} string правильно обрамленное имя таблицы
Source Code: framework/db/CDbConnection.php#611 (show)
public function quoteTableName($name)
{
    return 
$this->getSchema()->quoteTableName($name);
}

Обрамляет имя таблицы для использования в запросе. Если имя таблицы содержит префикс схемы, префикс также будет правильно обрамлён.

quoteValue() method

public string quoteValue(string $str)
$str string строка, подлежащая обрамлению
{return} string правильно обрамлённая строка
Source Code: framework/db/CDbConnection.php#573 (show)
public function quoteValue($str)
{
    if(
is_int($str) || is_float($str))
        return 
$str;

    
$this->setActive(true);
    if((
$value=$this->_pdo->quote($str))!==false)
        return 
$value;
    else  
// the driver doesn't support quote (e.g. oci)
        
return "'" . addcslashes(str_replace("'", "''", $str), "\000\n\r\\\032") . "'";
}

Обрамляет строковое значение для использования в запросе.

See Also

  • http://www.php.net/manual/en/function.PDO-quote.php

quoteValueWithType() method (available since v1.1.18)

public string quoteValueWithType(mixed $value, integer $type)
$value mixed значение, подлежащее обрамлению.
$type integer Тип, используемый для обрамления. Должен быть одним из констант `PDO::PARAM_*`, описанных в документации PDO. Этот параметр будет передан в функцию `PDO::quote()`.
{return} string правильно обрамлённая строка.
Source Code: framework/db/CDbConnection.php#596 (show)
public function quoteValueWithType($value, $type)
{
    
$this->setActive(true);
    if((
$quoted=$this->_pdo->quote($value, $type))!==false)
        return 
$quoted;
    else  
// the driver doesn't support quote (e.g. oci)
        
return "'" . addcslashes(str_replace("'", "''", $value), "\000\n\r\\\032") . "'";
}

Обрамляет значение для использования в запросе, используя заданный тип.

See Also

  • http://www.php.net/manual/en/function.PDO-quote.php

setActive() method

public void setActive(boolean $value)
$value boolean открывать или закрывать подключение к базе данных
Source Code: framework/db/CDbConnection.php#342 (show)
public function setActive($value)
{
    if(
$value!=$this->_active)
    {
        if(
$value)
            
$this->open();
        else
            
$this->close();
    }
}

Открывает или закрывает подключение к базе данных.

setAttribute() method

public void setAttribute(integer $name, mixed $value)
$name integer атрибут, который нужно установить
$value mixed значение атрибута
Исходный код: framework/db/CDbConnection.php#824 (показать)
public function setAttribute($name,$value)
{
    if(
$this->_pdo instanceof PDO)
        
$this->_pdo->setAttribute($name,$value);
    else
        
$this->_attributes[$name]=$value;
}

Устанавливает атрибут подключения к базе данных.

См. также

  • http://www.php.net/manual/en/function.PDO-setAttribute.php

setAttributes() метод (доступен начиная с v1.1.7)

public void setAttributes(array $values)
$values массив атрибуты (имя=>значение) для установки.
Исходный код: framework/db/CDbConnection.php#849 (показать)
public function setAttributes($values)
{
    foreach(
$values as $name=>$value)
        
$this->_attributes[$name]=$value;
}

Устанавливает набор атрибутов подключения к базе данных.

См. также

  • setAttribute

setAutoCommit() метод

public void setAutoCommit(boolean $value)
$value логическое автоматически ли будет происходить фиксация изменений при создании или обновлении записи в БД.
Исходный код: framework/db/CDbConnection.php#700 (показать)
public function setAutoCommit($value)
{
    
$this->setAttribute(PDO::ATTR_AUTOCOMMIT,$value);
}

Устанавливает, будет ли автоматически фиксироваться созданная или обновлённая запись в БД. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.

setColumnCase() метод

public void setColumnCase(mixed $value)
$value смешанный тип регистр имён столбцов
Исходный код: framework/db/CDbConnection.php#660 (показать)
public function setColumnCase($value)
{
    
$this->setAttribute(PDO::ATTR_CASE,$value);
}

Устанавливает регистр имён столбцов.

См. также

  • http://www.php.net/manual/en/pdo.setattribute.php

setDriverName() метод (доступен начиная с v1.1.16)

public void setDriverName(string $driverName)
$driverName строка что нужно установить. Допустимые значения — ключи из свойства driverMap.
Исходный код: framework/db/CDbConnection.php#746 (показать)
public function setDriverName($driverName)
{
    
$this->_driverName=strtolower($driverName);
}

Изменяет имя драйвера БД. Переопределяет значение, извлеченное из connectionString, что является поведением по умолчанию.

См. также

  • getDriverName
  • driverName

setNullConversion() метод

public void setNullConversion(mixed $value)
$value смешанный тип как преобразуются значения null и пустые строки
Исходный код: framework/db/CDbConnection.php#680 (показать)
public function setNullConversion($value)
{
    
$this->setAttribute(PDO::ATTR_ORACLE_NULLS,$value);
}

Устанавливает способ преобразования значений null и пустых строк.

См. также

  • http://www.php.net/manual/en/pdo.setattribute.php

setPersistent() метод

public void setPersistent(boolean $value)
$value логическое является ли подключение персистентным
Исходный код: framework/db/CDbConnection.php#720 (показать)
public function setPersistent($value)
{
    return 
$this->setAttribute(PDO::ATTR_PERSISTENT,$value);
}

Устанавливает, является ли подключение персистентным. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.

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

Spec-Zone.ru

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