Консольные команы (подробнее):
yii migrate/create <name>
- создаст миграциюyii migrate/create **create_**news**_table**
- создаст миграцию с кодом для создания таблицы newsyii migrate
- выведет список всех миграций, которые не применялись до сих пор и спросит выполнить ли их.yii migrate 3
- явно указывает сколько миграций необходимо применить к БД.yii migrate/to 150101_185401
- с помощью временной метки указывает какую миграцию применить.yii migrate/down
- отменяет самую последнюю применённую миграциюyii migrate/down 3
- отменяет 3 последних применённых миграцииyii migrate/redo
- перезагрузить последнюю применённую миграциюyii migrate/redo 3
- перезагрузить 3 последние применённые миграцииyii migrate/history
- показать последних 10 применённых миграцийyii migrate/history 5
- показать последних 5 применённых миграцийyii migrate/history all
- показать все применённые миграцииyii migrate/new
- показать первых 10 новых миграцийyii migrate/new 5
- показать первых 5 новых миграцийyii migrate/new all
- показать все новые миграции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 типу: VARCHARtext()
- Соответствует в SQL типу: TEXT MEDIUMTEXT LONGTEXTtime()
- Соответствует в 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***