Класс yii\db\Migration
| Наследование | yii\db\Migration » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable, yii\db\MigrationInterface |
| Использует Трейты | yii\db\SchemaBuilderTrait |
| Доступна с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/db/Migration.php |
Migration — базовый класс для представления миграции базы данных.
Migration предназначен для совместного использования с командой «yii migrate».
Каждый дочерний класс Migration представляет отдельную миграцию базы данных, которая идентифицируется по имени дочернего класса.
В каждом классе миграции метод up() должен быть переопределён для содержать логику «обновления» базы данных; в то время как метод down() — для логики «отката». Команда «yii migrate» управляет всеми доступными миграциями в приложении.
Если база данных поддерживает транзакции, вы можете переопределить также методы safeUp() и safeDown(), чтобы в случае возникновения каких-либо проблем при обновлении или откате вся миграция могла быть отменена целиком.
Обратите внимание, что некоторые запросы к БД в некоторых СУБД не могут быть помещены в транзакцию. Для примеров обратитесь к неявной фиксации. В этом случае вы должны реализовать up() и down(), вместо этого.
Migration предоставляет набор удобных методов для манипулирования данными и схемой базы данных. Например, метод insert() можно использовать для лёгкого вставки строки данных в таблицу базы данных; метод createTable() можно использовать для создания таблицы базы данных. По сравнению с аналогичными методами в yii\db\Command, эти методы отобразят дополнительную информацию, показывая параметры метода и время выполнения, что может быть полезно при применении миграций.
Для получения более подробной информации и инструкций по использованию Migration, см. статью в руководстве о Migration.
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $behaviors | yii\base\Behavior[] | Список прикреплённых к данному компоненту поведений | yii\base\Component |
| $db | yii\db\Connection|array|string | Объект подключения к БД или идентификатор компонента приложения подключения к БД, с которым должна работать эта миграция. | yii\db\Migration |
| $maxSqlOutputLength | integer | Максимальное количество символов выводимого SQL. | yii\db\Migration |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | yii\base\Component |
| __clone() | Этот метод вызывается после создания объекта путём клонирования существующего. | yii\base\Component |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства компонента. | yii\base\Component |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Component |
| __set() | Устанавливает значение свойства компонента. | yii\base\Component |
| __unset() | Устанавливает свойство компонента в null. | yii\base\Component |
| addColumn() | Создаёт и выполняет SQL-запрос для добавления нового столбца в базу данных. | yii\db\Migration |
| addCommentOnColumn() | Создаёт и выполняет SQL-запрос для добавления комментария к столбцу | yii\db\Migration |
| addCommentOnTable() | Создаёт SQL-запрос для добавления комментария к таблице | yii\db\Migration |
| addForeignKey() | Создаёт SQL-запрос для добавления внешнего ключа к существующей таблице. | yii\db\Migration |
| addPrimaryKey() | Создаёт и выполняет SQL-запрос для создания первичного ключа. | yii\db\Migration |
| alterColumn() | Создаёт и выполняет SQL-запрос для изменения определения столбца. | yii\db\Migration |
| attachBehavior() | Присоединяет поведение к этому компоненту. | yii\base\Component |
| attachBehaviors() | Присоединяет список поведений к компоненту. | yii\base\Component |
| batchInsert() | Создаёт и выполняет пакетный INSERT SQL-запрос. | yii\db\Migration |
| behaviors() | Возвращает список поведений, которые должен иметь этот компонент. | yii\base\Component |
| bigInteger() | Создаёт столбец bigint. | yii\db\SchemaBuilderTrait |
| bigPrimaryKey() | Создаёт столбец big primary key. | yii\db\SchemaBuilderTrait |
| binary() | Создаёт бинарный столбец. | yii\db\SchemaBuilderTrait |
| boolean() | Создаёт логический столбец. | yii\db\SchemaBuilderTrait |
| canGetProperty() | Возвращает значение, указывающее, можно ли прочитать свойство. | yii\base\Component |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Component |
| char() | Создаёт столбец char. | yii\db\SchemaBuilderTrait |
| className() | Возвращает полное квалифицированное имя этого класса. | yii\base\Object |
| createIndex() | Создаёт и выполняет SQL-запрос для создания нового индекса. | yii\db\Migration |
| createTable() | Создаёт и выполняет SQL-запрос для создания новой таблицы в базе данных. | yii\db\Migration |
| date() | Создаёт столбец date. | yii\db\SchemaBuilderTrait |
| dateTime() | Создаёт столбец datetime. | yii\db\SchemaBuilderTrait |
| decimal() | Создаёт столбец decimal. | yii\db\SchemaBuilderTrait |
| delete() | Создаёт и выполняет DELETE SQL-запрос. | yii\db\Migration |
| detachBehavior() | Отсоединяет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Отсоединяет все поведения от компонента. | yii\base\Component |
| double() | Создаёт столбец double. | yii\db\SchemaBuilderTrait |
| down() | Этот метод содержит логику, которая должна быть выполнена при удалении этой миграции. | yii\db\Migration |
| dropColumn() | Создаёт и выполняет SQL-запрос для удаления столбца базы данных. | yii\db\Migration |
| dropCommentFromColumn() | Создаёт и выполняет SQL-запрос для удаления комментария из столбца | yii\db\Migration |
| dropCommentFromTable() | Создаёт SQL-запрос для удаления комментария из таблицы | yii\db\Migration |
| dropForeignKey() | Создаёт SQL-запрос для удаления ограничения внешнего ключа. | yii\db\Migration |
| dropIndex() | Создаёт и выполняет SQL-запрос для удаления индекса. | yii\db\Migration |
| dropPrimaryKey() | Создаёт и выполняет SQL-запрос для удаления первичного ключа. | yii\db\Migration |
| dropTable() | Создаёт и выполняет SQL-запрос для удаления таблицы базы данных. | yii\db\Migration |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), присоединены к этому компоненту. | yii\base\Component |
| execute() | Выполняет SQL-запрос. | yii\db\Migration |
| float() | Создаёт столбец float. | yii\db\SchemaBuilderTrait |
| getBehavior() | Возвращает объект поведения с указанным именем. | yii\base\Component |
| getBehaviors() | Возвращает все присоединённые к этому компоненту поведения. | yii\base\Component |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли обработчик, присоединённый к указанному событию. | yii\base\Component |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Component |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство для этого компонента. | yii\base\Component |
| init() | Инициализирует миграцию. | yii\db\Migration |
| insert() | Создаёт и выполняет INSERT SQL-запрос. | yii\db\Migration |
| integer() | Создаёт столбец целого типа. | yii\db\SchemaBuilderTrait |
| money() | Создаёт денежный столбец. | yii\db\SchemaBuilderTrait |
| off() | Отсоединяет существующий обработчик событий от данного компонента. | yii\base\Component |
| on() | Присоединяет обработчик событий к событию. | yii\base\Component |
| primaryKey() | Создаёт столбец первичного ключа. | yii\db\SchemaBuilderTrait |
| renameColumn() | Строит и выполняет SQL-запрос для переименования столбца. | yii\db\Migration |
| renameTable() | Строит и выполняет SQL-запрос для переименования таблицы БД. | yii\db\Migration |
| safeDown() | Этот метод содержит логику, которая выполняется при удалении этой миграции. | yii\db\Migration |
| safeUp() | Этот метод содержит логику, которая выполняется при применении этой миграции. | yii\db\Migration |
| smallInteger() | Создаёт столбец типа smallint. | yii\db\SchemaBuilderTrait |
| string() | Создаёт строковый столбец. | yii\db\SchemaBuilderTrait |
| text() | Создаёт текстовый столбец. | yii\db\SchemaBuilderTrait |
| time() | Создаёт столбец времени. | yii\db\SchemaBuilderTrait |
| timestamp() | Создаёт столбец временной метки. | yii\db\SchemaBuilderTrait |
| trigger() | Вызывает событие. | yii\base\Component |
| truncateTable() | Строит и выполняет SQL-запрос для обнуления таблицы БД. | yii\db\Migration |
| up() | Этот метод содержит логику, которая выполняется при применении этой миграции. | yii\db\Migration |
| update() | Создаёт и выполняет UPDATE SQL-запрос. | yii\db\Migration |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| getDb() | yii\db\Migration |
Подробное описание свойств
$db общедоступное свойство
Объект подключения к БД или идентификатор приложения компонента подключения к БД, с которым должна работать эта миграция. Начиная с версии 2.0.2, это также может быть массив конфигурации для создания объекта.
Обратите внимание, что при создании объекта Migration командой migrate, это свойство будет перезаписано командой. Если вы не хотите использовать подключение к БД, предоставленное командой, вы можете переопределить метод init(), как показано ниже:
public function init()
{
$this->db = 'db2';
parent::init();
}
public yii\db\Connection|array|string $db = 'db'
$maxSqlOutputLength общедоступное свойство (доступно начиная с версии 2.0.13)
Максимальное количество символов в выводимом SQL. Полезно для сокращения длинных запросов и повышения компактности вывода в консоли.
public integer $maxSqlOutputLength = null
Подробное описание методов
addColumn() public method
Создаёт и выполняет SQL-запрос для добавления нового столбца в БД.
| public void addColumn ( $table, $column, $type ) | ||
|---|---|---|
| $table | string |
Таблица, в которую будет добавлен новый столбец. Имя таблицы будет правильно обрамлено кавычками методом. |
| $column | string |
Имя нового столбца. Имя будет правильно обрамлено кавычками методом. |
| $type | string |
Тип столбца. Метод yii\db\QueryBuilder::getColumnType() будет вызван для преобразования абстрактного типа столбца (если таковой имеется) в физический. Всё, что не распознаётся как абстрактный тип, останется в сгенерированном SQL. Например, 'string' будет преобразован в 'varchar(255)', а 'string not null' станет 'varchar(255) not null'. |
addCommentOnColumn() public method (доступно начиная с версии 2.0.8)
Создаёт и выполняет SQL-запрос для добавления комментария к столбцу
| public void addCommentOnColumn ( $table, $column, $comment ) | ||
|---|---|---|
| $table | string |
Таблица, столбец которой нужно прокомментировать. Имя таблицы будет правильно обрамлено кавычками методом. |
| $column | string |
Имя столбца, к которому нужно добавить комментарий. Имя столбца будет правильно обрамлено кавычками методом. |
| $comment | string |
Текст комментария, который нужно добавить. Комментарий будет правильно обрамлён кавычками методом. |
addCommentOnTable() public method (доступно начиная с версии 2.0.8)
Создаёт SQL-запрос для добавления комментария к таблице
| public void addCommentOnTable ( $table, $comment ) | ||
|---|---|---|
| $table | string |
Таблица, к которой нужно добавить комментарий. Имя таблицы будет правильно обрамлено кавычками методом. |
| $comment | string |
Текст комментария, который нужно добавить. Комментарий будет правильно обрамлён кавычками методом. |
addForeignKey() public method
Создаёт SQL-запрос для добавления внешнего ключа к существующей таблице.
Метод будет правильно обрамлять кавычками имена таблиц и столбцов.
| public void addForeignKey ( $name, $table, $columns, $refTable, $refColumns, $delete = null, $update = null ) | ||
|---|---|---|
| $name | string |
Имя ограничения внешнего ключа. |
| $table | string |
Таблица, к которой будет добавлено ограничение внешнего ключа. |
| $columns | string|array |
Имя столбца, к которому будет добавлено ограничение. Если столбцов несколько, разделяйте их запятыми или используйте массив. |
| $refTable | string |
Таблица, к которой ссылается внешний ключ. |
| $refColumns | string|array |
Имя столбца, к которому ссылается внешний ключ. Если столбцов несколько, разделяйте их запятыми или используйте массив. |
| $delete | string |
Опция ON DELETE. Большинство СУБД поддерживают следующие опции: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL |
| $update | string |
Опция ON UPDATE. Большинство СУБД поддерживают следующие опции: RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL |
addPrimaryKey() public method
Создаёт и выполняет SQL-запрос для создания первичного ключа.
Метод будет правильно обрамлять кавычками имена таблиц и столбцов.
| public void addPrimaryKey ( $name, $table, $columns ) | ||
|---|---|---|
| $name | string |
Имя ограничения первичного ключа. |
| $table | string |
Таблица, к которой будет добавлено ограничение первичного ключа. |
| $columns | string|array |
Строка с перечислением столбцов через запятую или массив столбцов, из которых будет состоять первичный ключ. |
alterColumn() public method
Создаёт и выполняет SQL-запрос для изменения определения столбца.
| public void alterColumn ( $table, $column, $type ) | ||
|---|---|---|
| $table | string |
Таблица, столбец которой нужно изменить. Имя таблицы будет правильно обрамлено кавычками методом. |
| $column | string |
Имя столбца, который нужно изменить. Имя будет правильно обрамлено кавычками методом. |
| $type | string |
Новый тип столбца. Метод yii\db\QueryBuilder::getColumnType() будет вызван для преобразования абстрактного типа столбца (если таковой имеется) в физический. Всё, что не распознаётся как абстрактный тип, останется в сгенерированном SQL. Например, 'string' будет преобразован в 'varchar(255)', а 'string not null' станет 'varchar(255) not null'. |
batchInsert() public method
Создаёт и выполняет SQL-запрос для массового вставки данных.
Метод будет правильно экранировать имена столбцов и связать значения для вставки.
| public void batchInsert ( $table, $columns, $rows ) | ||
|---|---|---|
| $table | string |
Таблица, в которую будут вставлены новые строки. |
| $columns | array |
Имена столбцов. |
| $rows | array |
Строки, которые будут массово вставлены в таблицу |
createIndex() public method
Создаёт и выполняет SQL-запрос для создания нового индекса.
| public void createIndex ( $name, $table, $columns, $unique = false ) | ||
|---|---|---|
| $name | string |
Имя индекса. Имя будет правильно обрамлено кавычками методом. |
| $table | string |
Таблица, для которой будет создан новый индекс. Имя таблицы будет правильно обрамлено кавычками методом. |
| $columns | string|array |
Столбец(ы), которые должны быть включены в индекс. Если столбцов несколько, разделяйте их запятыми или используйте массив. Каждое имя столбца будет правильно обрамлено кавычками методом. Обрамление кавычками будет пропущено для имён столбцов, содержащих левую круглую скобку "(". |
| $unique | boolean |
Добавить ли ограничение UNIQUE на созданный индекс. |
createTable() public method
Создаёт и выполняет SQL-запрос для создания новой таблицы БД.
Столбцы новой таблицы должны быть указаны как пары имя-определение (например, 'name' => 'string'), где имя — имя столбца, которое будет правильно обрамлено кавычками методом, а определение — тип столбца, который может содержать абстрактный тип БД.
Метод yii\db\QueryBuilder::getColumnType() будет вызван для преобразования любого абстрактного типа в физический.
Если столбец указан только с определением (например, 'PRIMARY KEY (name, type)'), он будет напрямую помещён в сгенерированный SQL.
| public void createTable ( $table, $columns, $options = null ) | ||
|---|---|---|
| $table | string |
Имя создаваемой таблицы. Имя будет правильно обрамлено кавычками методом. |
| $columns | array |
Столбцы (имя => определение) в новой таблице. |
| $options | string |
Дополнительный фрагмент SQL, который будет добавлен к сгенерированному SQL. |
delete() public method
Создаёт и выполняет SQL-запрос DELETE.
| public void удалить ( $table, $condition = '', $params = [] ) | ||
|---|---|---|
| $table | string |
Таблица, из которой будут удалены данные. |
| $condition | массив|строка |
Условия, которые будут добавлены в часть WHERE. Обратитесь к yii\db\Query::where() для получения информации о том, как указать условия. |
| $params | массив |
Параметры, которые будут связаны с запросом. |
down() public method
Этот метод содержит логику, которая должна быть выполнена при удалении этой миграции.
По умолчанию этот метод выбрасывает исключение, указывающее, что миграцию нельзя удалить. Подклассы могут переопределить этот метод, если соответствующие миграции могут быть удалены.
| public boolean down ( ) | ||
|---|---|---|
| return | boolean |
Возвращение значения false указывает на неудачу миграции и не следует продолжать выполнение. Все другие значения возврата означают успех миграции. |
dropColumn() public method
Создаёт и выполняет SQL-запрос для удаления столбца БД.
| public void dropColumn ( $table, $column ) | ||
|---|---|---|
| $table | строка |
Таблица, из которой должен быть удалён столбец. Имя будет корректно обрамлено кавычками методом. |
| $column | строка |
Имя столбца, который должен быть удалён. Имя будет корректно обрамлено кавычками методом. |
dropCommentFromColumn() public method (available since version 2.0.8)
Создаёт и выполняет SQL-запрос для удаления комментария из столбца
| public void dropCommentFromColumn ( $table, $column ) | ||
|---|---|---|
| $table | строка |
Таблица, из которой должен быть удалён комментарий. Имя таблицы будет корректно обрамлено кавычками методом. |
| $column | строка |
Имя столбца, из которого должен быть удалён комментарий. Имя столбца будет корректно обрамлено кавычками методом. |
dropCommentFromTable() public method (available since version 2.0.8)
Создаёт SQL-запрос для удаления комментария из таблицы
| public void dropCommentFromTable ( $table ) | ||
|---|---|---|
| $table | строка |
Таблица, из которой должен быть удалён комментарий. Имя таблицы будет корректно обрамлено кавычками методом. |
dropForeignKey() public method
Создаёт SQL-запрос для удаления внешнего ключа.
| public void dropForeignKey ( $name, $table ) | ||
|---|---|---|
| $name | строка |
Имя внешнего ключа, который нужно удалить. Имя будет корректно обрамлено кавычками методом. |
| $table | строка |
Таблица, из которой нужно удалить внешний ключ. Имя будет корректно обрамлено кавычками методом. |
dropIndex() public method
Создаёт и выполняет SQL-запрос для удаления индекса.
| public void dropIndex ( $name, $table ) | ||
|---|---|---|
| $name | строка |
Имя индекса, который нужно удалить. Имя будет корректно обрамлено кавычками методом. |
| $table | строка |
Таблица, из которой нужно удалить индекс. Имя будет корректно обрамлено кавычками методом. |
dropPrimaryKey() public method
Создаёт и выполняет SQL-запрос для удаления первичного ключа.
| public void dropPrimaryKey ( $name, $table ) | ||
|---|---|---|
| $name | строка |
Имя ограничения первичного ключа, которое нужно удалить. |
| $table | строка |
Таблица, из которой нужно удалить ограничение первичного ключа. |
dropTable() public method
Создаёт и выполняет SQL-запрос для удаления таблицы БД.
| public void dropTable ( $table ) | ||
|---|---|---|
| $table | строка |
Таблица, которая должна быть удалена. Имя будет корректно обрамлено кавычками методом. |
execute() public method
Выполняет SQL-запрос.
Этот метод выполняет указанный SQL-запрос с помощью $db.
| public void execute ( $sql, $params = [] ) | ||
|---|---|---|
| $sql | строка |
SQL-запрос, который нужно выполнить |
| $params | массив |
Входные параметры (имя => значение) для выполнения SQL-запроса. См. yii\db\Command::execute() для получения дополнительной информации. |
getDb() protected method (available since version 2.0.6)
| protected void getDb ( ) |
|---|
init() public method
Инициализирует миграцию.
Этот метод установит $db в компонент приложения 'db', если он null.
| public void init ( ) |
|---|
insert() public method
Создаёт и выполняет INSERT SQL-запрос.
Метод корректно обработает имена столбцов и свяжет вставляемые значения.
| public void insert ( $table, $columns ) | ||
|---|---|---|
| $table | строка |
Таблица, в которую будут вставлены новые строки. |
| $columns | массив |
Данные столбцов (имя => значение) для вставки в таблицу. |
renameColumn() public method
Создаёт и выполняет SQL-запрос для переименования столбца.
| public void renameColumn ( $table, $name, $newName ) | ||
|---|---|---|
| $table | строка |
Таблица, столбец которой нужно переименовать. Имя будет корректно обрамлено кавычками методом. |
| $name | строка |
Старое имя столбца. Имя будет корректно обрамлено кавычками методом. |
| $newName | строка |
Новое имя столбца. Имя будет корректно обрамлено кавычками методом. |
renameTable() public method
Создаёт и выполняет SQL-запрос для переименования таблицы БД.
| public void renameTable ( $table, $newName ) | ||
|---|---|---|
| $table | строка |
Таблица, которую нужно переименовать. Имя будет корректно обрамлено кавычками методом. |
| $newName | строка |
Новое имя таблицы. Имя будет корректно обрамлено кавычками методом. |
safeDown() public method
Этот метод содержит логику, которая должна быть выполнена при удалении этой миграции.
Этот метод отличается от down() тем, что логика БД, реализованная здесь, будет заключена в транзакцию БД. Подклассы могут реализовать этот метод вместо down(), если логика БД должна быть внутри транзакции.
Примечание: не все СУБД поддерживают транзакции. И некоторые запросы БД не могут быть помещены в транзакцию. Для некоторых примеров обратитесь к неявной фиксации. В этом случае вы всё равно должны реализовать up() и down(), вместо этого.
| public boolean safeDown ( ) | ||
|---|---|---|
| return | boolean |
Возвращает значение false, чтобы указать, что миграция завершается неудачно и не должна продолжаться дальше. Все другие возвращаемые значения означают, что миграция выполняется успешно. |
safeUp() public method
Этот метод содержит логику, которая должна быть выполнена при применении этой миграции.
Этот метод отличается от up() тем, что база данных логика, реализованная здесь, будет заключена в транзакцию базы данных. Дочерние классы могут реализовать этот метод вместо up(), если логика базы данных должна быть в рамках транзакции.
Примечание: не все СУБД поддерживают транзакции. И некоторые запросы к базе данных не могут быть помещены в транзакцию. Для некоторых примеров, пожалуйста, обратитесь к неявной фиксации. В этом случае вы по-прежнему должны реализовать up() и down(), вместо этого.
| public boolean safeUp ( ) | ||
|---|---|---|
| return | boolean |
Возвращает значение false, чтобы указать, что миграция завершается неудачно и не должна продолжаться дальше. Все другие возвращаемые значения означают, что миграция выполняется успешно. |
truncateTable() public method
Создает и выполняет оператор SQL для усечения таблицы базы данных.
| public void truncateTable ( $table ) | ||
|---|---|---|
| $table | string |
Таблица, которая должна быть усечена. Имя будет должным образом обрамлено кавычками методом. |
up() public method
Этот метод содержит логику, которая должна быть выполнена при применении этой миграции.
Дочерние классы могут переопределить этот метод, чтобы предоставить фактическую логику миграции.
| public boolean up ( ) | ||
|---|---|---|
| return | boolean |
Возвращает значение false, чтобы указать, что миграция завершается неудачно и не должна продолжаться дальше. Все другие возвращаемые значения означают, что миграция выполняется успешно. |
update() public method
Создает и выполняет оператор UPDATE SQL.
Метод корректно экранирует имена столбцов и связывает обновляемые значения.
| public void update ( $table, $columns, $condition = '', $params = [] ) | ||
|---|---|---|
| $table | string |
Таблица, которая должна быть обновлена. |
| $columns | array |
Данные столбцов (имя => значение) для обновления. |
| $condition | array|string |
Условие, которое будет помещено в часть WHERE. Обратитесь к yii\db\Query::where() для получения информации о том, как указать условия. |
| $params | array |
Параметры, которые будут связаны с запросом. |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-db-migration.html