CDbConnection
| Пакет | system.db |
|---|---|
| Наследование | класс CDbConnection » CApplicationComponent » CComponent |
| Реализует | IApplicationComponent |
| С версии | 1.0 |
| Исходный код | framework/db/CDbConnection.php |
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)
Возвращает атрибуты, ранее явно заданные для подключения к БД.
См. также
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)
Возвращает регистр имён столбцов.
commandBuilder свойство только для чтения
public CDbCommandBuilder getCommandBuilder()
Возвращает билдер SQL-команд для текущего подключения к БД.
connectionStatus свойство только для чтения
public string getConnectionStatus()
Возвращает состояние подключения. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.
connectionString свойство
public string $connectionString;
Имя источника данных (DSN) содержит информацию, необходимую для подключения к базе данных.
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='')
Возвращает идентификатор последней вставленной строки или значения последовательности.
nullConversion свойство
public mixed getNullConversion()
public void setNullConversion(mixed $value)
Возвращает способ преобразования значений NULL и пустых строк.
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 свойство (доступно начиная с 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 свойство
public array $schemaCachingExclude;
Список таблиц, метаданные которых не должны кэшироваться. По умолчанию пустой массив.
См. также
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. |
public function __construct($dsn='',$username='',$password='')
{
$this->connectionString=$dsn;
$this->username=$username;
$this->password=$password;
}
Конструктор. Обратите внимание, что подключение к базе данных не устанавливается при создании экземпляра этого подключения. Установите свойство active в true, чтобы установить подключение.
__sleep() метод
public array __sleep() | ||
| {return} | массив | |
public function __sleep()
{
$this->close();
return array_keys(get_object_vars($this));
}
Закрывает подключение при сериализации.
beginTransaction() метод
public CDbTransaction beginTransaction() | ||
| {return} | CDbTransaction | инициализированная транзакция |
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} | статика | сам экземпляр подключения. |
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() |
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 | команда базы данных |
public function createCommand($query=null)
{
$this->setActive(true);
return new CDbCommand($this,$query);
}
Создаёт команду для выполнения.
createPdoInstance() метод
protected PDO createPdoInstance() | ||
| {return} | PDO | экземпляр pdo |
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 | установлено ли подключение к базе данных |
public function getActive()
{
return $this->_active;
}
Возвращает, установлено ли подключение к базе данных.
getAttribute() метод
public mixed getAttribute(integer $name) | ||
| $name | целое число | свойство, которое необходимо получить |
| {return} | смешанный тип | соответствующая информация о свойстве |
public function getAttribute($name)
{
$this->setActive(true);
return $this->_pdo->getAttribute($name);
}
Получает информацию об атрибуте конкретного подключения к БД.
getAttributes() метод (доступен с v1.1.7)
public array getAttributes() | ||
| {return} | array | атрибуты (имя=>значение), которые были явно заданы для подключения к БД. |
public function getAttributes()
{
return $this->_attributes;
}
Возвращает атрибуты, которые были ранее явно заданы для подключения к БД.
См. также
getAutoCommit() метод
public boolean getAutoCommit() | ||
| {return} | boolean | будет ли автоматически выполняться коммит при создании или обновлении записи в БД. |
public function getAutoCommit()
{
return $this->getAttribute(PDO::ATTR_AUTOCOMMIT);
}
Возвращает значение, указывающее, будет ли автоматически выполняться коммит при создании или обновлении записи в БД. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.
getAvailableDrivers() метод
public static array getAvailableDrivers() | ||
| {return} | array | список доступных драйверов PDO. |
public static function getAvailableDrivers()
{
return PDO::getAvailableDrivers();
}
Возвращает список доступных драйверов PDO.
getClientVersion() метод
public string getClientVersion() | ||
| {return} | string | информация о версии драйвера БД |
public function getClientVersion()
{
return $this->getAttribute(PDO::ATTR_CLIENT_VERSION);
}
Возвращает информацию о версии драйвера БД.
getColumnCase() метод
public mixed getColumnCase() | ||
| {return} | mixed | регистр имён столбцов |
public function getColumnCase()
{
return $this->getAttribute(PDO::ATTR_CASE);
}
Возвращает регистр имён столбцов
getCommandBuilder() метод
public CDbCommandBuilder getCommandBuilder() | ||
| {return} | CDbCommandBuilder | построитель команд |
public function getCommandBuilder()
{
return $this->getSchema()->getCommandBuilder();
}
Возвращает построитель SQL-команд для текущего подключения к БД.
getConnectionStatus() метод
public string getConnectionStatus() | ||
| {return} | string | состояние подключения |
public function getConnectionStatus()
{
return $this->getAttribute(PDO::ATTR_CONNECTION_STATUS);
}
Возвращает состояние подключения. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.
getCurrentTransaction() метод
public CDbTransaction getCurrentTransaction() | ||
| {return} | CDbTransaction | текущая активная транзакция. Null, если нет активной транзакции. |
public function getCurrentTransaction()
{
if($this->_transaction!==null)
{
if($this->_transaction->getActive())
return $this->_transaction;
}
return null;
}
Возвращает текущую активную транзакцию.
getDriverName() метод
public string getDriverName() | ||
| {return} | string | имя драйвера БД. |
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 последней вставленной строки или последнее значение, полученное из объекта последовательности. |
public function getLastInsertID($sequenceName='')
{
$this->setActive(true);
return $this->_pdo->lastInsertId($sequenceName);
}
Возвращает ID последней вставленной строки или значение последовательности.
getNullConversion() метод
public mixed getNullConversion() | ||
| {return} | mixed | как преобразуются null и пустые строки |
public function getNullConversion()
{
return $this->getAttribute(PDO::ATTR_ORACLE_NULLS);
}
Возвращает способ преобразования null и пустых строк.
getPdoInstance() метод
public PDO getPdoInstance() | ||
| {return} | PDO | экземпляр PDO, null, если соединение ещё не установлено |
public function getPdoInstance()
{
return $this->_pdo;
}
Возвращает экземпляр PDO.
getPdoType() метод
public integer getPdoType(string $type) | ||
| $type | string | Тип PHP (получен с помощью вызова gettype()). |
| {return} | integer | соответствующий тип PDO |
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 | является ли подключение персистентным |
public function getPersistent()
{
return $this->getAttribute(PDO::ATTR_PERSISTENT);
}
Возвращает значение, указывающее, является ли подключение персистентным. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.
getPrefetch() метод
public boolean getPrefetch() | ||
| {return} | boolean | указывает, выполняет ли подключение предварительную загрузку данных |
public function getPrefetch()
{
return $this->getAttribute(PDO::ATTR_PREFETCH);
}
Возвращает значение, указывающее, выполняет ли подключение предварительную загрузку данных.
getSchema() method
public CDbSchema getSchema() | ||
| {return} | CDbSchema | схема базы данных для текущего подключения |
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 | информация о сервере СУБД |
public function getServerInfo()
{
return $this->getAttribute(PDO::ATTR_SERVER_INFO);
}
Возвращает информацию о сервере СУБД.
getServerVersion() method
public string getServerVersion() | ||
| {return} | string | информация о версии сервера СУБД |
public function getServerVersion()
{
return $this->getAttribute(PDO::ATTR_SERVER_VERSION);
}
Возвращает информацию о версии сервера СУБД.
getStats() method
public array getStats() | ||
| {return} | array | первый элемент — количество выполненных SQL-запросов, второй — общее время выполнения SQL-запросов. |
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 | настройки таймаута для подключения |
public function getTimeout()
{
return $this->getAttribute(PDO::ATTR_TIMEOUT);
}
Возвращает настройки таймаута для подключения.
init() method
public void init() |
public function init()
{
parent::init();
if($this->autoConnect)
$this->setActive(true);
}
Инициализирует компонент. Этот метод требуется IApplicationComponent и вызывается приложением при использовании CDbConnection в качестве компонента приложения. При переопределении этого метода обязательно вызывайте родительскую реализацию, чтобы компонент мог быть помечен как инициализированный.
initConnection() method
protected void initConnection(PDO $pdo) | ||
| $pdo | PDO | экземпляр PDO |
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() |
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 | правильно обрамленное имя столбца |
public function quoteColumnName($name)
{
return $this->getSchema()->quoteColumnName($name);
}
Обрамляет имя столбца для использования в запросе. Если имя столбца содержит префикс, префикс также будет правильно обрамлён.
quoteTableName() method
public string quoteTableName(string $name) | ||
| $name | string | имя таблицы |
| {return} | string | правильно обрамленное имя таблицы |
public function quoteTableName($name)
{
return $this->getSchema()->quoteTableName($name);
}
Обрамляет имя таблицы для использования в запросе. Если имя таблицы содержит префикс схемы, префикс также будет правильно обрамлён.
quoteValue() method
public string quoteValue(string $str) | ||
| $str | string | строка, подлежащая обрамлению |
| {return} | string | правильно обрамлённая строка |
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") . "'";
}
Обрамляет строковое значение для использования в запросе.
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 | правильно обрамлённая строка. |
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") . "'";
}
Обрамляет значение для использования в запросе, используя заданный тип.
setActive() method
public void setActive(boolean $value) | ||
| $value | boolean | открывать или закрывать подключение к базе данных |
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 | значение атрибута |
public function setAttribute($name,$value)
{
if($this->_pdo instanceof PDO)
$this->_pdo->setAttribute($name,$value);
else
$this->_attributes[$name]=$value;
}
Устанавливает атрибут подключения к базе данных.
setAttributes() метод (доступен начиная с v1.1.7)
public void setAttributes(array $values) | ||
| $values | массив | атрибуты (имя=>значение) для установки. |
public function setAttributes($values)
{
foreach($values as $name=>$value)
$this->_attributes[$name]=$value;
}
Устанавливает набор атрибутов подключения к базе данных.
См. также
setAutoCommit() метод
public void setAutoCommit(boolean $value) | ||
| $value | логическое | автоматически ли будет происходить фиксация изменений при создании или обновлении записи в БД. |
public function setAutoCommit($value)
{
$this->setAttribute(PDO::ATTR_AUTOCOMMIT,$value);
}
Устанавливает, будет ли автоматически фиксироваться созданная или обновлённая запись в БД. Некоторые СУБД (например, sqlite) могут не поддерживать эту функцию.
setColumnCase() метод
public void setColumnCase(mixed $value) | ||
| $value | смешанный тип | регистр имён столбцов |
public function setColumnCase($value)
{
$this->setAttribute(PDO::ATTR_CASE,$value);
}
Устанавливает регистр имён столбцов.
setDriverName() метод (доступен начиная с v1.1.16)
public void setDriverName(string $driverName) | ||
| $driverName | строка | что нужно установить. Допустимые значения — ключи из свойства driverMap. |
public function setDriverName($driverName)
{
$this->_driverName=strtolower($driverName);
}
Изменяет имя драйвера БД. Переопределяет значение, извлеченное из connectionString, что является поведением по умолчанию.
См. также
setNullConversion() метод
public void setNullConversion(mixed $value) | ||
| $value | смешанный тип | как преобразуются значения null и пустые строки |
public function setNullConversion($value)
{
$this->setAttribute(PDO::ATTR_ORACLE_NULLS,$value);
}
Устанавливает способ преобразования значений null и пустых строк.
setPersistent() метод
public void setPersistent(boolean $value) | ||
| $value | логическое | является ли подключение персистентным |
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