Класс yii\db\Connection
| Наследование | yii\db\Connection » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Подклассы | yii\sphinx\Connection |
| Доступно с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/db/Connection.php |
Connection представляет собой соединение с базой данных через PDO.
Connection работает вместе с yii\db\Command, yii\db\DataReader и yii\db\Transaction, чтобы предоставить доступ к данным различных СУБД в рамках общего набора API. Они являются тонким обертыванием расширения PDO PHP.
Connection поддерживает репликацию базы данных и разделение чтений и записей. В частности, компонент Connection может быть настроен с несколькими $masters и $slaves. Он будет выполнять балансировку нагрузки и резервирование, выбирая подходящие серверы. Он также автоматически будет направлять операции чтения на серверы-слепки, а записи — на мастер-серверы.
Для создания соединения с БД установите $dsn, $username и $password, а затем вызовите open() для подключения к серверу базы данных. Текущее состояние соединения можно проверить с помощью $isActive.
Следующий пример демонстрирует создание экземпляра Connection и установление соединения с БД:
$connection = new \yii\db\Connection([
'dsn' => $dsn,
'username' => $username,
'password' => $password,
]);
$connection->open();
После установления соединения с БД можно выполнять SQL-запросы, например, такие:
$command = $connection->createCommand('SELECT * FROM post');
$posts = $command->queryAll();
$command = $connection->createCommand('UPDATE post SET status=1');
$command->execute();
Также можно выполнять подготовленные SQL-запросы и привязывать параметры к подготовленному SQL. При получении параметров из пользовательского ввода следует использовать этот подход, чтобы предотвратить атаки SQL-инъекции. Пример:
$command = $connection->createCommand('SELECT * FROM post WHERE id=:id');
$command->bindValue(':id', $_GET['id']);
$post = $command->query();
Дополнительную информацию о выполнении различных запросов к БД см. в yii\db\Command.
Если основная СУБД поддерживает транзакции, вы можете выполнять транзакционные SQL-запросы, как в примере:
$transaction = $connection->beginTransaction();
try {
$connection->createCommand($sql1)->execute();
$connection->createCommand($sql2)->execute();
// ... executing other SQL statements ...
$transaction->commit();
} catch (Exception $e) {
$transaction->rollBack();
}
Вы также можете использовать сокращение для вышеизложенного, например:
$connection->transaction(function () {
$order = new Order($customer);
$order->save();
$order->addItems($items);
});
При необходимости можно передать уровень изоляции транзакции как второй параметр:
$connection->transaction(function (Connection $db) {
//return $db->...
}, Transaction::READ_UNCOMMITTED);
Компонент Connection часто используется как компонент приложения и настраивается в конфигурации приложения следующим образом:
'components' => [
'db' => [
'class' => '\yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
],
Общедоступные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $attributes | массив | Атрибуты PDO (имя => значение), которые должны быть установлены при вызове open() для установления подключения к БД. | yii\db\Connection |
| $behaviors | yii\base\Behavior[] | Список привязанных к этому компоненту поведений | yii\base\Component |
| $charset | строка | Кодировка, используемая для подключения к базе данных. | yii\db\Connection |
| $commandClass | строка | Класс, используемый для создания новых объектов базы данных yii\db\Command. | yii\db\Connection |
| $driverName | строка | Имя драйвера БД | yii\db\Connection |
| $dsn | строка | Имя источника данных (DSN) содержит информацию, необходимую для подключения к базе данных. | yii\db\Connection |
| $emulatePrepare | булево | Включить эмуляцию prepare. | yii\db\Connection |
| $enableLogging | булево | Включить протоколирование запросов к базе данных. | yii\db\Connection |
| $enableProfiling | булево | Включить профилирование запросов к базе данных. | yii\db\Connection |
| $enableQueryCache | булево | Включить кэширование запросов. | yii\db\Connection |
| $enableSavepoint | булево | Включить [сохранение точки](http://en. | yii\db\Connection |
| $enableSchemaCache | булево | Включить кэширование схемы. | yii\db\Connection |
| $enableSlaves | булево | Включить разделение чтения/записи, используя $slaves для чтения данных. | yii\db\Connection |
| $isActive | булево | Установлено ли соединение с БД | yii\db\Connection |
| $lastInsertID | строка | Идентификатор последней вставленной строки или последнее значение, полученное из объекта последовательности | yii\db\Connection |
| $master | yii\db\Connection | Текущее активное мастер-соединение. | yii\db\Connection |
| $masterConfig | массив | Конфигурация, которая должна быть объединена с каждой конфигурацией master, указанной в $masters. | yii\db\Connection |
| $masterPdo | PDO | Экземпляр PDO для текущего активного мастер-соединения. | yii\db\Connection |
| $masters | массив | Список конфигураций мастер-соединений. | yii\db\Connection |
| $password | строка | Пароль для установления подключения к БД. | yii\db\Connection |
| $pdo | PDO | Экземпляр PHP PDO, связанный с этим подключением к БД. | yii\db\Connection |
| $pdoClass | строка | Пользовательский класс обёртки PDO. | yii\db\Connection |
| $queryBuilder | yii\db\QueryBuilder | Построитель запросов для текущего подключения к БД. | yii\db\Connection |
| $queryCache | yii\caching\CacheInterface|строка | Объект кэша или идентификатор компонента приложения кэша, используемый для кэширования запросов. | yii\db\Connection |
| $queryCacheDuration | целое число | Число секунд, в течение которых результаты запросов могут оставаться действительными в кэше по умолчанию. | yii\db\Connection |
| $schema | yii\db\Schema | Информация о схеме базы данных, открытой этим подключением. | yii\db\Connection |
| $schemaCache | yii\caching\CacheInterface|строка | Объект кэша или идентификатор компонента приложения кэша, используемого для кэширования метаданных таблиц. | yii\db\Connection |
| $schemaCacheDuration | целое число | Число секунд, в течение которых метаданные таблиц могут оставаться действительными в кэше. | yii\db\Connection |
| $schemaCacheExclude | массив | Список таблиц, метаданные которых НЕ должны кэшироваться. | yii\db\Connection |
| $schemaMap | массив | Сопоставление между именами драйверов PDO и классами yii\db\Schema. | yii\db\Connection |
| $serverRetryInterval | целое число | Интервал повтора попыток в секундах для серверов, помеченных как неработающие, указанных в $masters и $slaves. | yii\db\Connection |
| $serverStatusCache | yii\caching\CacheInterface|строка | Объект кэша или идентификатор компонента приложения кэша, используемого для хранения состояния работоспособности серверов БД, указанных в $masters и $slaves. | yii\db\Connection |
| $shuffleMasters | булево | Перемешивать ли $masters перед получением одного. | yii\db\Connection |
| $slave | yii\db\Connection | Текущее активное раб соединение. | yii\db\Connection |
| $slaveConfig | массив | Конфигурация, которая должна быть объединена с каждой конфигурацией slave, указанной в $slaves. | yii\db\Connection |
| $slavePdo | PDO | Экземпляр PDO для текущего активного раб соединения. | yii\db\Connection |
| $slaves | массив | Список конфигураций подключений к вторичным серверам. | yii\db\Connection |
| $tablePrefix | строка | Общий префикс или суффикс для имён таблиц. | yii\db\Connection |
| $transaction | yii\db\Transaction | Текущая активная транзакция. | yii\db\Connection |
| $username | строка | Имя пользователя для подключения к базе данных. | yii\db\Connection |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Component |
| __clone() | Сбрасывает соединение после клонирования. | yii\db\Connection |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства компонента. | yii\base\Component |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Component |
| __set() | Устанавливает значение свойства компонента. | yii\base\Component |
| __sleep() | Закрывает соединение перед сериализацией. | yii\db\Connection |
| __unset() | Устанавливает свойство компонента в значение null. | yii\base\Component |
| attachBehavior() | Присоединяет поведение к компоненту. | yii\base\Component |
| attachBehaviors() | Присоединяет список поведений к компоненту. | yii\base\Component |
| beginTransaction() | Начинает транзакцию. | yii\db\Connection |
| behaviors() | Возвращает список поведений, по которым должен вести себя этот компонент. | yii\base\Component |
| cache() | Использует кэш запросов для запросов, выполненных с помощью вызываемого объекта. | yii\db\Connection |
| canGetProperty() | Возвращает значение, указывающее, можно ли считать свойство. | yii\base\Component |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Component |
| className() | Возвращает полное квалифицированное имя этого класса. | yii\base\Object |
| close() | Закрывает текущее активное соединение с БД. | yii\db\Connection |
| createCommand() | Создает команду для выполнения. | yii\db\Connection |
| detachBehavior() | Отсоединяет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Отсоединяет все поведения от компонента. | yii\base\Component |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), присоединены к этому компоненту. | yii\base\Component |
| getBehavior() | Возвращает объект именованного поведения. | yii\base\Component |
| getBehaviors() | Возвращает все присоединенные к этому компоненту поведения. | yii\base\Component |
| getDriverName() | Возвращает имя драйвера БД. Основано на текущем $dsn, в случае, если оно не было явно установлено конечным пользователем. | yii\db\Connection |
| getIsActive() | Возвращает значение, указывающее, установлено ли соединение с БД. | yii\db\Connection |
| getLastInsertID() | Возвращает ID последней вставленной строки или значения последовательности. | yii\db\Connection |
| getMaster() | Возвращает текущее активное мастер-соединение. | yii\db\Connection |
| getMasterPdo() | Возвращает экземпляр PDO для текущего активного мастер-соединения. | yii\db\Connection |
| getQueryBuilder() | Возвращает генератор запросов для текущего соединения с БД. | yii\db\Connection |
| getQueryCacheInfo() | Возвращает текущую информацию о кэше запросов. | yii\db\Connection |
| getSchema() | Возвращает информацию о схеме базы данных, открытой этим соединением. | yii\db\Connection |
| getSlave() | Возвращает текущее активное slave-соединение. | yii\db\Connection |
| getSlavePdo() | Возвращает экземпляр PDO для текущего активного slave-соединения. | yii\db\Connection |
| getTableSchema() | Получает информацию о схеме указанной таблицы. | yii\db\Connection |
| getTransaction() | Возвращает текущую активную транзакцию. | yii\db\Connection |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли обработчики, присоединенные к указанному событию. | yii\base\Component |
| hasMethod() | Возвращает значение, указывающее, определен ли метод. | yii\base\Component |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство для этого компонента. | yii\base\Component |
| init() | Инициализирует объект. | yii\base\Object |
| noCache() | Временно отключает кэш запросов. | yii\db\Connection |
| off() | Отсоединяет существующего обработчика событий от этого компонента. | yii\base\Component |
| on() | Присоединяет обработчик событий к событию. | yii\base\Component |
| open() | Устанавливает соединение с БД. | yii\db\Connection |
| quoteColumnName() | Заключает имя столбца в кавычки для использования в запросе. | yii\db\Connection |
| quoteSql() | Обрабатывает SQL-запрос, заключая в кавычки имена таблиц и столбцов, заключённые в двойные скобки. | yii\db\Connection |
| quoteTableName() | Заключает имя таблицы в кавычки для использования в запросе. | yii\db\Connection |
| quoteValue() | Заключает строковое значение в кавычки для использования в запросе. | yii\db\Connection |
| setDriverName() | Изменяет текущее имя драйвера. | yii\db\Connection |
| transaction() | Выполняет переданный обратный вызов в рамках транзакции. | yii\db\Connection |
| trigger() | Вызывает событие. | yii\base\Component |
| useMaster() | Выполняет переданный обратный вызов, используя мастер-соединение. | yii\db\Connection |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| createPdoInstance() | Создаёт экземпляр PDO. | yii\db\Connection |
| initConnection() | Инициализирует подключение к БД. | yii\db\Connection |
| openFromPool() | Открывает подключение к серверу в пуле. | yii\db\Connection |
| openFromPoolSequentially() | Открывает подключение к серверу в пуле. | yii\db\Connection |
События
| Событие | Тип | Описание | Определено в |
|---|---|---|---|
| EVENT_AFTER_OPEN | \yii\db\Event | Событие, которое срабатывает после установления подключения к БД | yii\db\Connection |
| EVENT_BEGIN_TRANSACTION | \yii\db\Event | Событие, которое срабатывает непосредственно перед началом транзакции верхнего уровня | yii\db\Connection |
| EVENT_COMMIT_TRANSACTION | \yii\db\Event | Событие, которое срабатывает непосредственно после подтверждения транзакции верхнего уровня | yii\db\Connection |
| EVENT_ROLLBACK_TRANSACTION | \yii\db\Event | Событие, которое срабатывает непосредственно после отката транзакции верхнего уровня | yii\db\Connection |
Подробное описание свойств
$attributes открытое свойство
Атрибуты PDO (имя => значение), которые должны быть установлены при вызове open() для установления подключения к БД. Подробнее об имеющихся атрибутах см. в документации PHP.
public array $attributes = null
$charset открытое свойство
Кодировка, используемая для подключения к базе данных. Свойство используется только для баз данных MySQL, PostgreSQL и CUBRID. По умолчанию равно null, что означает использование кодировки по умолчанию, настроенной в базе данных.
Для Oracle Database кодировка должна быть указана в $dsn, например, для UTF-8, добавив ;charset=UTF-8 к строке DSN.
То же самое относится к использованию кодировки GBK или BIG5 с MySQL, рекомендуется указывать кодировку через $dsn, например 'mysql:dbname=mydatabase;host=127.0.0.1;charset=GBK;'.
public string $charset = null
$commandClass открытое свойство (доступно начиная с версии 2.0.7)
Класс, используемый для создания новых объектов базы данных yii\db\Command. Если вы хотите расширить класс yii\db\Command, вы можете настроить это свойство для использования вашей расширенной версии класса.
См. также createCommand().
public string $commandClass = 'yii\db\Command'
$driverName открытое свойство
Имя драйвера БД
public string getDriverName ( )
public void setDriverName ( $driverName )
$dsn открытое свойство
Идентификатор источника данных (DSN) содержит информацию, необходимую для подключения к базе данных. Обратитесь к документации PHP для получения подробной информации о формате строки DSN.
Для SQLite можно использовать псевдоним пути для указания пути к базе данных, например sqlite:@app/data/db.sql.
См. также $charset.
public string $dsn = null
$emulatePrepare открытое свойство
Включает эмуляцию подготовки. По умолчанию false, что означает, что PDO будет использовать поддержку native prepare, если она доступна. Для некоторых баз данных (таких как MySQL) может потребоваться установить это значение в true, чтобы PDO мог эмулировать поддержку prepare, минуя ошибочную поддержку native prepare. Значение по умолчанию null, что означает, что значение PDO ATTR_EMULATE_PREPARES не будет изменено.
public boolean $emulatePrepare = null
$enableLogging открытое свойство (доступно начиная с версии 2.0.12)
Включает протоколирование запросов к базе данных. По умолчанию true. В среде производства может быть выгодно отключить эту опцию для повышения производительности, если информация, записываемая в лог, не нужна.
См. также $enableProfiling.
public boolean $enableLogging = true
$enableProfiling открытое свойство (доступно начиная с версии 2.0.12)
Включает профилирование запросов к базе данных. По умолчанию true. В среде производства может быть выгодно отключить эту опцию для повышения производительности, если информация, записываемая в лог, не нужна.
См. также $enableLogging.
public boolean $enableProfiling = true
$enableQueryCache открытое свойство
Включает кэширование запросов. Обратите внимание, что для включения кэширования запросов необходимо включить соответствующий компонент кэша, указанный в $queryCache, и установить $enableQueryCache в true. Также, кэшируются только результаты запросов, заключённых в cache().
См. также:
public boolean $enableQueryCache = true
$enableSavepoint открытое свойство
Включает использование savepoint. Обратите внимание, что если базовая СУБД не поддерживает savepoint, установка этого свойства в true не повлияет.
public boolean $enableSavepoint = true
$enableSchemaCache открытое свойство
Включает кэширование схемы. Обратите внимание, что для включения кэширования схемы необходимо включить соответствующий компонент кэша, указанный в $schemaCache, и установить $enableSchemaCache в true.
См. также:
public boolean $enableSchemaCache = false
$enableSlaves открытое свойство
Включает разделение чтения/записи с использованием $slaves для чтения данных. Обратите внимание, что если $slaves пусто, разделение чтения/записи НЕ будет включено независимо от значения этого свойства.
public boolean $enableSlaves = true
$isActive открытое только для чтения свойство
Установлено ли подключение к БД
public boolean getIsActive ( )
$lastInsertID открытое только для чтения свойство
Идентификатор строки последней вставленной строки или последнее значение, полученное из объекта последовательности
public string getLastInsertID ( $sequenceName = '' )
$master открытое только для чтения свойство
Текущее активное мастер-соединение. null возвращается, если мастер-соединение недоступно.
public yii\db\Connection getMaster ( )
$masterConfig открытое свойство
Настройка, которая должна быть объединена с каждой настройкой master, указанной в $masters. Например,
[
'username' => 'master',
'password' => 'master',
'attributes' => [
// use a smaller connection timeout
PDO::ATTR_TIMEOUT => 10,
],
]
public array $masterConfig = []
$masterPdo открытое только для чтения свойство
Экземпляр PDO для текущего активного мастер-соединения.
public PDO getMasterPdo ( )
$masters открытое свойство
Список настроек мастер-соединения. Каждая настройка используется для создания мастер-соединения к БД. При вызове open() будет выбран один из этих конфигураций и использован для создания подключения к БД, которое будет использоваться этим объектом. Обратите внимание, что когда это свойство не пустое, настройки подключения (например, "dsn", "username") этого объекта будут игнорироваться.
См. также:
public array $masters = []
$password открытое свойство
Пароль для установления подключения к БД. По умолчанию null, что означает отсутствие пароля.
public string $password = null
$pdo открытое свойство
Экземпляр PHP PDO, связанный с этим подключением к БД. Это свойство в основном управляется методами open() и close(). Когда подключение к БД активно, это свойство будет представлять экземпляр PDO; в противном случае оно будет null.
См. также $pdoClass.
public PDO $pdo = null
$pdoClass открытое свойство
Пользовательский класс PDO. Если не задано, он будет использовать PDO или yii\db\mssql\PDO при использовании MSSQL.
См. также $pdo.
public string $pdoClass = null
$queryBuilder public только для чтения свойство
Построитель запросов для текущего подключения к БД.
public yii\db\QueryBuilder getQueryBuilder ( )
$queryCache public свойство
Объект кэша или идентификатор компонента приложения кэша, используемого для кэширования запросов.
См. также $enableQueryCache.
public yii\caching\CacheInterface|string $queryCache = 'cache'
$queryCacheDuration public свойство
Установленное значение по умолчанию в секундах, в течение которого результаты запросов могут оставаться действительными в кэше. По умолчанию равно 3600, что означает 3600 секунд, или один час. Используйте 0, чтобы указать, что кэшированные данные никогда не истекут. Значение этого свойства будет использоваться, когда вызов cache() не содержит параметра для определения времени жизни кэша.
См. также:
public integer $queryCacheDuration = 3600
$schema public только для чтения свойство
Информация о схеме базы данных, открытой этим подключением.
public yii\db\Schema getSchema ( )
$schemaCache public свойство
Объект кэша или идентификатор компонента приложения кэша, используемого для кэширования метаданных таблиц.
См. также $enableSchemaCache.
public yii\caching\CacheInterface|string $schemaCache = 'cache'
$schemaCacheDuration public свойство
Количество секунд, в течение которого метаданные таблиц могут оставаться действительными в кэше. Используйте 0, чтобы указать, что кэшированные данные никогда не истекут.
См. также $enableSchemaCache.
public integer $schemaCacheDuration = 3600
$schemaCacheExclude public свойство
Список таблиц, метаданные которых НЕ должны кэшироваться. По умолчанию пустой массив. Имена таблиц могут содержать префикс схемы, если он есть. Не заключайте имена таблиц в кавычки.
См. также $enableSchemaCache.
public array $schemaCacheExclude = []
$schemaMap public свойство
Сопоставление между именами драйверов PDO и классами yii\db\Schema. Ключи массива — имена драйверов PDO, а значения — соответствующее имя класса схемы или конфигурация. Обратитесь к Yii::createObject() для получения подробностей о том, как указать конфигурацию.
Это свойство в основном используется getSchema() при получении информации о схеме базы данных. Вам обычно не нужно устанавливать это свойство, если вы не хотите использовать свой собственный класс yii\db\Schema для поддержки СУБД, которая не поддерживается Yii.
public array $schemaMap = ['pgsql' => 'yii\db\pgsql\Schema', 'mysqli' => 'yii\db\mysql\Schema', 'mysql' => 'yii\db\mysql\Schema', 'sqlite' => 'yii\db\sqlite\Schema', 'sqlite2' => 'yii\db\sqlite\Schema', 'sqlsrv' => 'yii\db\mssql\Schema', 'oci' => 'yii\db\oci\Schema', 'mssql' => 'yii\db\mssql\Schema', 'dblib' => 'yii\db\mssql\Schema', 'cubrid' => 'yii\db\cubrid\Schema']
$serverRetryInterval public свойство
Интервал повтора в секундах для серверов, отмеченных как неисправные в списках $masters и $slaves. Используется совместно с $serverStatusCache.
public integer $serverRetryInterval = 600
$serverStatusCache public свойство
Объект кэша или идентификатор компонента приложения кэша, который используется для хранения состояния работоспособности серверов БД, указанных в $masters и $slaves. Используется только при включенном разделении чтение/запись или если $masters не пустое.
public yii\caching\CacheInterface|string $serverStatusCache = 'cache'
$shuffleMasters public свойство (доступно начиная с версии 2.0.11)
Следует ли перемешивать список $masters перед выбором одного сервера?
См. также $masters.
public boolean $shuffleMasters = true
$slave public только для чтения свойство
Текущее активное подключение к резервному серверу. null возвращается, если нет доступных резервных серверов и $fallbackToMaster равно false.
public yii\db\Connection getSlave ( $fallbackToMaster = true )
$slaveConfig public свойство
Конфигурация, которая должна быть объединена с каждой конфигурацией резервного сервера, перечисленной в $slaves. Например,
[
'username' => 'slave',
'password' => 'slave',
'attributes' => [
// use a smaller connection timeout
PDO::ATTR_TIMEOUT => 10,
],
]
public array $slaveConfig = []
$slavePdo public только для чтения свойство
Экземпляр PDO для текущего активного подключения к резервному серверу. null возвращается, если нет доступных резервных подключений и $fallbackToMaster равно false.
public PDO getSlavePdo ( $fallbackToMaster = true )
$slaves public свойство
Список конфигураций подключений к резервным серверам. Каждая конфигурация используется для создания резервного подключения к БД. При $enableSlaves равно true, одна из этих конфигураций будет выбрана и использована для создания подключения к БД для выполнения только запросов чтения.
См. также:
public array $slaves = []
$tablePrefix public свойство
Общий префикс или суффикс для имён таблиц. Если имя таблицы задано как {{%TableName}}, символ процента % будет заменён значением этого свойства. Например, {{%post}} преобразуется в {{tbl_post}}.
public string $tablePrefix = ''
$transaction public только для чтения свойство
Текущая активная транзакция. Null, если нет активной транзакции.
public yii\db\Transaction getTransaction ( )
$username public свойство
Имя пользователя для установления подключения к БД. По умолчанию null, что означает отсутствие имени пользователя.
public string $username = null
Подробное описание методов
__clone() public method
Перезапустите подключение после клонирования.
| public void __clone ( ) |
|---|
__sleep() public method
Закройте подключение перед сериализацией.
| public array __sleep ( ) |
|---|
beginTransaction() public method
Начинает транзакцию.
| public yii\db\Transaction beginTransaction ( $isolationLevel = null ) | ||
|---|---|---|
| $isolationLevel | string|null |
Уровень изоляции для этой транзакции. Подробности см. в yii\db\Transaction::begin(). |
| return | yii\db\Transaction |
Инициализированная транзакция |
cache() public method
Использует кэш запросов для запросов, выполненных с помощью вызываемого объекта.
Когда кеширование запросов включено ($enableQueryCache имеет значение true и $queryCache ссылается на допустимый кэш), запросы, выполненные внутри вызываемого объекта, будут кэшироваться, и их результаты будут извлекаться из кэша, если он доступен. Например,
// The customer will be fetched from cache if available.
// If not, the query will be made against DB and cached for use next time.
$customer = $db->cache(function (Connection $db) {
return $db->createCommand('SELECT * FROM customer WHERE id=1')->queryOne();
});
Обратите внимание, что кэш запросов имеет значение только для запросов, возвращающих результаты. Для запросов, выполненных с помощью yii\db\Command::execute(), кэш запросов не будет использоваться.
См. также:
| public mixed cache ( callable $callable, $duration = null, $dependency = null ) | ||
|---|---|---|
| $callable | callable |
PHP-вызываемый объект, содержащий запросы к БД, которые будут использовать кэш запросов. Подпись вызываемого объекта: |
| $duration | integer |
Количество секунд, в течение которых результаты запросов могут оставаться действительными в кэше. Если это не задано, используется значение $queryCacheDuration. Использование 0 указывает, что кэшированные данные никогда не истекают. |
| $dependency | yii\caching\Dependency |
Зависимость кэша, связанная с кэшированными результатами запроса. |
| return | mixed |
Результат выполнения вызываемого объекта |
| throws | \Exception|\Throwable |
если при выполнении запроса произошла ошибка |
close() public method
Закрывает текущее активное подключение к БД.
Не выполняет никаких действий, если подключение уже закрыто.
| public void close ( ) |
|---|
createCommand() public method
Создаёт команду для выполнения.
| public yii\db\Command createCommand ( $sql = null, $params = [] ) | ||
|---|---|---|
| $sql | string |
SQL-запрос, который будет выполнен |
| $params | array |
Параметры, которые будут привязаны к SQL-запросу |
| return | yii\db\Command |
Команда БД |
createPdoInstance() protected method
Создаёт экземпляр PDO.
Этот метод вызывается методом open() для установления подключения к БД. По умолчанию создаётся экземпляр PHP PDO. Можно переопределить этот метод, если требуется настройка экземпляра PDO для определённых СУБД.
| protected PDO createPdoInstance ( ) | ||
|---|---|---|
| return | PDO |
Экземпляр pdo |
getDriverName() public method
Возвращает имя драйвера БД. Основано на текущем $dsn, в случае, если он не был явно задан пользователем.
| public string getDriverName ( ) | ||
|---|---|---|
| return | string |
Имя драйвера БД |
getIsActive() public method
Возвращает значение, указывающее, установлено ли подключение к БД.
| public boolean getIsActive ( ) | ||
|---|---|---|
| return | boolean |
Установлено ли подключение к БД |
getLastInsertID() public method
Возвращает идентификатор последней вставленной строки или последовательности значений.
См. также http://php.net/manual/en/pdo.lastinsertid.php.
| public string getLastInsertID ( $sequenceName = '' ) | ||
|---|---|---|
| $sequenceName | string |
Имя объекта последовательности (требуется некоторыми СУБД) |
| return | string |
Идентификатор строки последней вставленной строки или последнее значение, извлечённое из объекта последовательности |
getMaster() public method (доступно начиная с версии 2.0.11)
Возвращает текущее активное мастер-соединение.
Если этот метод вызывается в первый раз, он попытается открыть мастер-соединение.
| public yii\db\Connection getMaster ( ) | ||
|---|---|---|
| return | yii\db\Connection |
Текущее активное мастер-соединение. |
getMasterPdo() public method
Возвращает экземпляр PDO для текущего активного мастер-соединения.
Этот метод откроет мастер-соединение к БД и затем вернёт $pdo.
| public PDO getMasterPdo ( ) | ||
|---|---|---|
| return | PDO |
Экземпляр PDO для текущего активного мастер-соединения. |
getQueryBuilder() public method
Возвращает генератор запросов для текущего подключения к БД.
| public yii\db\QueryBuilder getQueryBuilder ( ) | ||
|---|---|---|
| return | yii\db\QueryBuilder |
Генератор запросов для текущего подключения к БД. |
getQueryCacheInfo() public method
Возвращает текущую информацию о кэше запросов.
Этот метод используется в yii\db\Command.
| public array getQueryCacheInfo ( $duration, $dependency ) | ||
|---|---|---|
| $duration | integer |
Предпочтительная продолжительность кэширования. Если null, будет проигнорировано. |
| $dependency | yii\caching\Dependency |
Предпочтительная зависимость кэша. Если null, будет проигнорировано. |
| return | array |
Текущая информация о кэше запросов или null, если кэш запросов не включён. |
getSchema() public method
Возвращает информацию о схеме базы данных, открытой этим подключением.
| public yii\db\Schema getSchema ( ) | ||
|---|---|---|
| return | yii\db\Schema |
Информация о схеме базы данных, открытой этим подключением. |
| throws | yii\base\NotSupportedException |
если нет поддержки текущего типа драйвера |
getSlave() public method
Возвращает текущее активное подключение к рабу.
Если этот метод вызывается в первый раз, он попытается открыть подключение к рабу, когда $enableSlaves имеет значение true.
| public yii\db\Connection getSlave ( $fallbackToMaster = true ) | ||
|---|---|---|
| $fallbackToMaster | boolean |
Определяет, нужно ли вернуть подключение к мастеру в случае отсутствия подключения к рабу. |
| return | yii\db\Connection |
Текущее активное подключение к рабу. |
getSlavePdo() public method
Возвращает экземпляр PDO для текущего активного подключения к рабу.
Когда $enableSlaves имеет значение true, один из рабов будет использован для запросов чтения, и его экземпляр PDO будет возвращен этим методом.
| public PDO getSlavePdo ( $fallbackToMaster = true ) | ||
|---|---|---|
| $fallbackToMaster | boolean |
Определяет, нужно ли вернуть PDO мастер-сервера в случае отсутствия доступных подключений к рабам. |
| return | PDO |
Экземпляр PDO для текущего активного подключения к рабу. |
getTableSchema() public method
Получает схему информации для указанной таблицы.
| public yii\db\TableSchema getTableSchema ( $name, $refresh = false ) | ||
|---|---|---|
| $name | string |
Имя таблицы. |
| $refresh | boolean |
Определяет, нужно ли перезагрузить схему таблицы, даже если она найдена в кэше. |
| return | yii\db\TableSchema |
Информация о схеме таблицы. Нулевое значение, если указанная таблица не существует. |
getTransaction() public method
Возвращает текущую активную транзакцию.
| public yii\db\Transaction getTransaction ( ) | ||
|---|---|---|
| return | yii\db\Transaction |
Текущая активная транзакция. Нулевое значение, если активной транзакции нет. |
initConnection() protected method
Инициализирует подключение к БД.
Этот метод вызывается сразу после установления подключения к БД. Стандартная реализация включает PDO::ATTR_EMULATE_PREPARES , если $emulatePrepare имеет значение true, и устанавливает кодировку базы данных $charset, если она не пустая. Затем происходит срабатывание события EVENT_AFTER_OPEN.
| protected void initConnection ( ) |
|---|
noCache() public method
Временно отключает кэширование запросов.
Запросы, выполненные в пределах вызываемого кода, вообще не будут использовать кэш запросов. Например,
$db->cache(function (Connection $db) {
// ... queries that use query cache ...
return $db->noCache(function (Connection $db) {
// this query will not use query cache
return $db->createCommand('SELECT * FROM customer WHERE id=1')->queryOne();
});
});
См. также:
| public mixed noCache ( callable $callable ) | ||
|---|---|---|
| $callable | callable |
Функциональное выражение PHP, содержащее запросы к БД, которые не должны использовать кэш запросов. Подпись вызываемого кода: |
| return | mixed |
Результат выполнения функционального выражения. |
| throws | \Exception|\Throwable |
если при выполнении запроса произошла ошибка. |
open() public method
Устанавливает подключение к БД.
Ничего не делает, если подключение к БД уже установлено.
| public void open ( ) | ||
|---|---|---|
| throws | yii\db\Exception |
если подключение не удалось |
openFromPool() protected method
Открывает подключение к серверу в пуле.
Этот метод реализует балансировку нагрузки между заданным списком серверов. Подключения будут пробуемы в случайном порядке.
| protected yii\db\Connection openFromPool ( array $pool, array $sharedConfig ) | ||
|---|---|---|
| $pool | array |
Список конфигураций подключений в пуле серверов |
| $sharedConfig | array |
Конфигурация, общая для указанных в |
| return | yii\db\Connection |
Открытое подключение к БД или |
| throws | yii\base\InvalidConfigException |
если конфигурация не содержит "dsn" |
openFromPoolSequentially() protected method (available since version 2.0.11)
Открывает подключение к серверу в пуле.
Этот метод реализует балансировку нагрузки между заданным списком серверов. Подключения будут пробуемы в последовательном порядке.
| protected yii\db\Connection openFromPoolSequentially ( array $pool, array $sharedConfig ) | ||
|---|---|---|
| $pool | array |
Список конфигураций подключений в пуле серверов |
| $sharedConfig | array |
Конфигурация, общая для указанных в |
| return | yii\db\Connection |
Открытое подключение к БД или |
| throws | yii\base\InvalidConfigException |
если конфигурация не содержит "dsn" |
quoteColumnName() public method
Приводит имя столбца в соответствие для использования в запросе.
Если имя столбца содержит префикс, префикс также будет правильно приведен к соответствию. Если имя столбца уже приведено к соответствию или содержит специальные символы, включая '(', '[[' и '{{', то этот метод ничего не сделает.
| public string quoteColumnName ( $name ) | ||
|---|---|---|
| $name | string |
Имя столбца |
| return | string |
Правильно приведенное к соответствию имя столбца |
quoteSql() public method
Обрабатывает SQL-запрос, приводя имена таблиц и столбцов, заключённых в двойные скобки, в соответствие.
Токены, заключённые в двойные фигурные скобки, рассматриваются как имена таблиц, а токены, заключённые в двойные квадратные скобки, — как имена столбцов. Они будут приведены к соответствию соответственно. Также символ процента "%" в начале или конце имени таблицы будет заменён на $tablePrefix.
| public string quoteSql ( $sql ) | ||
|---|---|---|
| $sql | string |
SQL-запрос, который нужно привести к соответствию |
| return | string |
Приведенный к соответствию SQL-запрос |
quoteTableName() public method
Приводит имя таблицы в соответствие для использования в запросе.
Если имя таблицы содержит префикс схемы, префикс также будет правильно приведен к соответствию. Если имя таблицы уже приведено к соответствию или содержит специальные символы, включая '(', '[[' и '{{', то этот метод ничего не сделает.
| public string quoteTableName ( $name ) | ||
|---|---|---|
| $name | string |
Имя таблицы |
| return | string |
Правильно приведенное к соответствию имя таблицы |
quoteValue() public method
Приводит строковое значение в соответствие для использования в запросе.
Обратите внимание, что если параметр не является строкой, он будет возвращен без изменений.
См. также http://php.net/manual/en/pdo.quote.php.
| public string quoteValue ( $value ) | ||
|---|---|---|
| $value | string |
Строка, подлежащая экранированию |
| return | string |
Правильно экранированная строка |
setDriverName() public method
Изменяет текущее имя драйвера.
| public void setDriverName ( $driverName ) | ||
|---|---|---|
| $driverName | string |
Имя драйвера БД |
transaction() public method
Выполняет переданный обратный вызов в рамках транзакции.
| public mixed transaction ( callable $callback, $isolationLevel = null ) | ||
|---|---|---|
| $callback | callable |
Действительный PHP обратный вызов, выполняющий задачу. Принимает экземпляр подключения в качестве параметра. |
| $isolationLevel | string|null |
Уровень изоляции для этой транзакции. См. yii\db\Transaction::begin() для получения подробностей. |
| return | mixed |
Результат функции обратного вызова |
| throws | \Exception|\Throwable |
если при запросе произошла ошибка. В этом случае транзакция будет откачена. |
useMaster() public method
Выполняет переданный обратный вызов, используя подключение к мастер-серверу.
Этот метод предоставляет возможность временно принудительно использовать подключение к мастер-серверу для выполнения операций БД, даже если это запросы чтения. Например,
$result = $db->useMaster(function ($db) {
return $db->createCommand('SELECT * FROM user LIMIT 1')->queryOne();
});
| public mixed useMaster ( callable $callback ) | ||
|---|---|---|
| $callback | callable |
PHP обратный вызов, который будет выполнен этим методом. Его сигнатура |
| return | mixed |
Возвращаемое значение обратного вызова |
| throws | \Exception|\Throwable |
если из обратного вызова возникло исключение |
Подробное описание событий
EVENT_AFTER_OPEN событие типа \yii\db\Event
Событие, которое срабатывает после установления подключения к БД
EVENT_BEGIN_TRANSACTION событие типа \yii\db\Event
Событие, которое срабатывает непосредственно перед началом транзакции верхнего уровня
EVENT_COMMIT_TRANSACTION событие типа \yii\db\Event
Событие, которое срабатывает непосредственно после подтверждения транзакции верхнего уровня
EVENT_ROLLBACK_TRANSACTION событие типа \yii\db\Event
Событие, которое срабатывает непосредственно после отката транзакции верхнего уровня
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-db-connection.html