Миграции в yii2

Консольные команы (подробнее):

  1. yii migrate/create <name> - создаст миграцию
  2. yii migrate/create **create_**news**_table** - создаст миграцию с кодом для создания таблицы news
  3. yii migrate - выведет список всех миграций, которые не применялись до сих пор и спросит выполнить ли их.
  4. yii migrate 3 - явно указывает сколько миграций необходимо применить к БД.
  5. yii migrate/to 150101_185401 - с помощью временной метки указывает какую миграцию применить.
  6. yii migrate/down - отменяет самую последнюю применённую миграцию
  7. yii migrate/down 3 - отменяет 3 последних применённых миграции
  8. yii migrate/redo - перезагрузить последнюю применённую миграцию
  9. yii migrate/redo 3 - перезагрузить 3 последние применённые миграции
  10. yii migrate/history - показать последних 10 применённых миграций
  11. yii migrate/history 5 - показать последних 5 применённых миграций
  12. yii migrate/history all - показать все применённые миграции
  13. yii migrate/new - показать первых 10 новых миграций
  14. yii migrate/new 5 - показать первых 5 новых миграций
  15. yii migrate/new all - показать все новые миграции
  16. yii migrate/mark m150101_185401_create_news_table - Вместо применения или отката миграций, есть возможность просто отметить, что база данных была обновлена до определенной миграции. Указывается временная метка или полное имя миграции.

Методы в миграциях

Документация по классу yii\db\Migration, в частности тут можно посмотреть какие типы можно использовать при написании миграций:

  • bigInteger() - Соответствует в SQL типу: BIGINT (8 байт) - целое число от -263 до 263-1).
  • binary() - Соответствует в SQL типу: LONGBLOB и BLOB. BLOB ( 216-1 символов) используется для хранения текста, изображений, звука, электронных документов и т.д.
  • boolean() - Соответствует в SQL типу: tinyint(1)
  • char() - Соответствует в SQL типу: CHAR(n) позволяет хранить строку фиксированной длины n. Значение n - от 0 до 65535.
  • date() - Соответствует в SQL типу: DATE (3 байта) от ‘1000-01-01’ до ‘9999-12-31’
  • dateTime() - Соответствует в SQL типу: DATETIME (8 байт) значение вводится и хранится в формате - YYYY-MM-DD hh:mm:ss.
  • decimal() - Соответствует в SQL типу: DECIMAL (M,D) или DEC (M,D) или NUMERIC (M,D) Используются для величин повышенной точности, например, для денежных данных. M - количество отводимых под число символов (максимальное значение - 64). D - количество знаков после запятой (максимальное значение - 30). Пример: DECIMAL (5,2) - будет хранить числа от -99,99 до 99,99.
  • float() - Соответствует в SQL типу: FLOAT (M,D) (4 байта) M - количество отводимых под число символов. D - количество символов дробной части.
  • double() - Соответствует в SQL типу: DOUBLE (M,D) (8 байта)
  • smallInteger() - Соответствует в SQL типу: tinyint (1 байт) - хранит любое число в диапазоне от -128 до 127.
  • string() - Соответствует в SQL типу: VARCHAR
  • text() - Соответствует в SQL типу: TEXT MEDIUMTEXT LONGTEXT
  • time() - Соответствует в SQL типу: TIME (3 байта) от ‘-838:59:59’ до ‘838:59:59’
  • timestamp() - Соответствует в SQL типу: TIMESTAMP (4 байта) от ‘1970-01-01 00:00:00’ до ‘2037-12-31 23:59:59’
  • money() - Соответствует в SQL типу: DECIMAL(19,4)

addForeignKey ($name, $table, $columns, $refTable, $refColumns, $delete = null, $update = null) - добовляем внешний ключь (в SQL оператор FOREIGN KEY), служит для указания в одной таблице на Первичный ключ в другой.
$name - название внешнего ключа, название формируется так: fk-текущаяТаблица-полеТекущейТаблицы
$table - текущая таблица
$columns - поле внешнего ключа текущей таблицы
$refTable - внешняя таблица
$refColumns - первичный ключ внешней таблицы
$update - действие при обновлении (аналогично с $delete)
$delete - действие при удалении записи
(Каскадные ограничения ссылочной целостности: https://technet.microsoft.com/ru-ru/library/ms186973(v=sql.105).aspx ):

  • CASCADE - при попытке удалить строку с ключом, на которую ссылаются внешние ключи в строках других таблиц, все строки, содержащие эти внешние ключи, также должны быть удалены.
  • NO ACTION и RESTRICT - при попытке удалить строку с ключом, на которую ссылаются внешние ключи в строках других таблиц, нужно сообщить об ошибке, а для инструкции DELETE выполнить откат.
  • SET DEFAULT - все значения, составляющие эти внешние ключи, должны быть изменены на значения по умолчанию. Чтобы выполнялось это ограничение, для всех столбцов внешних ключей целевой таблицы должно быть определено значение по умолчанию.
  • SET NULL - Указывает, что при попытке удалить строку с ключом, на которую ссылаются внешние ключи в строках других таблиц, все значения, составляющие эти внешние ключи, должны быть изменены на NULL. Чтобы выполнялось это ограничение, все столбцы внешних ключей целевой таблицы должны допускать значение NULL.

По умолчанию ставится RESTRICT