Spec-Zone.ru › Yii 2.0

Класс 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().

См. также:

  • $queryCache
  • cache()
  • noCache()
public boolean $enableQueryCache = true

$enableSavepoint открытое свойство

Включает использование savepoint. Обратите внимание, что если базовая СУБД не поддерживает savepoint, установка этого свойства в true не повлияет.

public boolean $enableSavepoint = true

$enableSchemaCache открытое свойство

Включает кэширование схемы. Обратите внимание, что для включения кэширования схемы необходимо включить соответствующий компонент кэша, указанный в $schemaCache, и установить $enableSchemaCache в true.

См. также:

  • $schemaCacheDuration
  • $schemaCacheExclude
  • $schemaCache
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") этого объекта будут игнорироваться.

См. также:

  • $masterConfig
  • $shuffleMasters
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() не содержит параметра для определения времени жизни кэша.

См. также:

  • $enableQueryCache
  • 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, одна из этих конфигураций будет выбрана и использована для создания подключения к БД для выполнения только запросов чтения.

См. также:

  • $enableSlaves
  • $slaveConfig
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(), кэш запросов не будет использоваться.

См. также:

  • $enableQueryCache
  • $queryCache
  • noCache()
public mixed cache ( callable $callable, $duration = null, $dependency = null )
$callable callable

PHP-вызываемый объект, содержащий запросы к БД, которые будут использовать кэш запросов. Подпись вызываемого объекта: function (Connection $db).

$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

Текущее активное мастер-соединение. null возвращается, если мастер недоступен.

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

Текущее активное подключение к рабу. null возвращается, если подключение к рабу недоступно, и $fallbackToMaster имеет значение false.

getSlavePdo() public method

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

Когда $enableSlaves имеет значение true, один из рабов будет использован для запросов чтения, и его экземпляр PDO будет возвращен этим методом.

public PDO getSlavePdo ( $fallbackToMaster = true )
$fallbackToMaster boolean

Определяет, нужно ли вернуть PDO мастер-сервера в случае отсутствия доступных подключений к рабам.

return PDO

Экземпляр PDO для текущего активного подключения к рабу. null возвращается, если подключение к рабу недоступно, и $fallbackToMaster имеет значение false.

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();
    });
});

См. также:

  • $enableQueryCache
  • $queryCache
  • cache()
public mixed noCache ( callable $callable )
$callable callable

Функциональное выражение PHP, содержащее запросы к БД, которые не должны использовать кэш запросов. Подпись вызываемого кода: function (Connection $db).

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

Конфигурация, общая для указанных в $pool.

return yii\db\Connection

Открытое подключение к БД или null , если сервер недоступен

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

Конфигурация, общая для указанных в $pool.

return yii\db\Connection

Открытое подключение к БД или null , если сервер недоступен

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 обратный вызов, который будет выполнен этим методом. Его сигнатура function (Connection $db). Его возвращаемое значение будет возвращено этим методом.

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

Spec-Zone.ru

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