Создание миграции yii из демо-блога sql
У меня есть код SQL из демо-блога yii:
CREATE TABLE tbl_post
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(128) NOT NULL,
content TEXT NOT NULL,
tags TEXT,
status INTEGER NOT NULL,
create_time INTEGER,
update_time INTEGER,
author_id INTEGER NOT NULL,
CONSTRAINT FK_post_author FOREIGN KEY (author_id)
REFERENCES tbl_user (id) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Draft', 'PostStatus', 1, 1);
Мне нужно записать его в файл миграции в функцию up(), как написать код? И где можно прочитать о добавлении таблиц в файл миграции (я имею в виду, как писать, например, "varchar" или "string")? Можно ли добавить миграцию файлов "INSERT", "UPDATE"?
1 ответ
Решение
В вашей функции up() или safeUp() вы бы добавили следующий код:
$this->createTable('tbl_post', array(
"id" => "pk",
"title" => "VARCHAR(128) NOT NULL",
"content" => "TEXT NOT NULL",
"tags" => "TEXT",
"status" => "INT NOT NULL",
"create_time" => "INT",
"update_time" => "INT",
"author_id" => "INT NOT NULL",
), "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci");
$this->addForeignKey('FK_post_author', 'tbl_post', 'author_id', 'tbl_user', 'id', 'CASCADE', 'RESTRICT');
$this->insert('tbl_lookup', array(
"name" => "Draft",
"type" => "PostStatus",
"code" => 1,
"position" => 1,
);
Также доступен метод update() (вставка показана выше): http://www.yiiframework.com/doc/api/1.1/CDbMigration