Примеры работы с миграциями в Yii framework

Миграции — это очень полезный и удобный инструмент для управления структурой бд, значительно упрощающий командную разработку. В этом посте, я покажу примеры часто используемых миграций: create table, insert, update и add column.

В качестве примера будем использовать таблицу tbl_news:

CREATE TABLE IF NOT EXISTS `tbl_news` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(200) CHARACTER SET utf8 NOT NULL,
  `content` text CHARACTER SET utf8,
  `created_at` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;


Создание таблицы с помощью миграции

1. Управлениями миграциями в Yii производится с помощью консольной команды yiic migrate. Для того, чтобы создать нашу первую миграцию, выполним в консоли команду: yiic migrate create create_tbl_news. При вопросе «Create new migration »%path_to_migration%», отвечаем yes. Если все прошло правильно, то в директории protected/migrations должен появиться файл, с примерно таким названием m120302_172329_create_tbl_news.php. Первая часть названия файла это timestamp, вторая это название миграции, которое мы задали.

2. Редактируем созданный файл, в нем будет два метода up() и down(). Для создания таблицы нам нужен будет метод up(). Изменим его содержимое, дописав следующий код:

$this->createTable('tbl_news', array(
      'id' => 'pk',
      'title' => 'VARCHAR(200) NOT NULL',
      'content' => 'text',
));


Полностью файл миграции должен выглядеть так (не забываем, что timestamp у вас будет другой):

class m120302_172329_create_tbl_news extends CDbMigration
{
    public function up()
    {
        $this->createTable('tbl_news', array(
                  'id' => 'pk',
                  'title' => 'VARCHAR(200) NOT NULL',
                  'content' => 'text',
            ));
    }
 
    public function down()
    {
        echo "m120302_172329_create_tbl_news does not support migration down.\n";
        return false;
    }
 
    /*
    // Use safeUp/safeDown to do migration with transaction
    public function safeUp()
    {
    }
 
    public function safeDown()
    {
    }
    */


3. Теперь, выполним в консоли команду yiic migrate, если все прошло удачно, то видим надпись Migrated up Scuccessfully! В бд должна появиться таблица tbl_news и tbl_migration. Двигаемся дальше.

Добавление записи в таблицу с помощью миграции

1. Выполняем команду: yiic migrate create insert_tbl_news.
2. Редактируем сгенерированный файл с миграцией. Добавляем в метод up() следующий код:

$this->insert('tbl_news', array(
                   'title' => 'Title 1',
                   'content' => 'Content 1',
));


3.Выполняем команду yiic migrate.

Изменение записи в таблице с помощью миграции

1. Выполняем команду: yiic migrate create update_tbl_news.
2. Редактируем сгенерированный файл с миграцией. Добавляем в метод up():

$this->update('tbl_news', array(
              'title' => 'Updated title'), 
              'id=1'
);


3.Выполняем команду yiic migrate.

Добавление колонки в таблицу с помощью миграции

1. Выполняем команду: yiic migrate create add_column_tbl_news.
Редактируем сгенерированный файл с миграцией. Добавляем в метод up():

$this->addColumn('tbl_news', 'created_at', 'date');


3. Выполняем команду yiic migrate.

Удаление колонки

1. Выполняем команду: yiic migrate create drop_column_tbl_news.
Редактируем сгенерированный файл с миграцией. Добавляем в метод up():

$this->dropColumn('tbl_news', 'created_at');


3. Выполняем команду yiic migrate.

Вот собственно и все. Подробнее об остальных миграциях можно почитать на официальном сайте.
Теги:
migrate, create, команду, Выполняем, title, помощью, migration, Редактируем, метод, миграции , Добавляем, миграцией, function, array, public, content, будет, created, m120302, column, update, таблицу, insert, должен, появиться, INCREMENT, записи, консоли, safeDown, timestamp, VARCHAR, createTable, safeUp, миграции, выполним
Добавлено: 01 Марта 2015 12:24:20 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...