Last active
September 14, 2022 14:34
-
-
Save Uman88/4b0c97ba171bbadbbc199b3c4dd3a5c1 to your computer and use it in GitHub Desktop.
[Миграции баз данных] #yii2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # https://learntutorials.net/ru/yii2/topic/1929/%D0%BC%D0%B8%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D0%B8-%D0%B1%D0%B0%D0%B7-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85 | |
| Создание мигрантов | |
| yii migrate/create <name> | |
| Необходимый аргумент имени дает краткое описание новой миграции. Например, если миграция связана с созданием новой таблицы с именем news, вы можете использовать имя create_news_table и запустить следующую команду | |
| yii migrate/create create_news_table | |
| Пример файла миграции | |
| <?php | |
| use yii\db\Migration; | |
| class m150101_185401_create_news_table extends Migration | |
| { | |
| public function up() | |
| { | |
| } | |
| public function down() | |
| { | |
| echo "m101129_185401_create_news_table cannot be reverted.\n"; | |
| return false; | |
| } | |
| /* | |
| // Use safeUp/safeDown to run migration code within a transaction | |
| public function safeUp() | |
| { | |
| } | |
| public function safeDown() | |
| { | |
| } | |
| */ | |
| } | |
| Падение таблицы | |
| public function up() | |
| { | |
| $this->dropTable('post'); | |
| } | |
| Создайте поля таблицы сразу | |
| yii migrate/create create_post_table --fields="title:string,body:text" | |
| Формирует: | |
| /** | |
| * Handles the creation for table `post`. | |
| */ | |
| class m150811_220037_create_post_table extends Migration | |
| { | |
| /** | |
| * @inheritdoc | |
| */ | |
| public function up() | |
| { | |
| $this->createTable('post', [ | |
| 'id' => $this->primaryKey(), | |
| 'title' => $this->string(), | |
| 'body' => $this->text(), | |
| ]); | |
| } | |
| /** | |
| * @inheritdoc | |
| */ | |
| public function down() | |
| { | |
| $this->dropTable('post'); | |
| } | |
| } | |
| Создать таблицу | |
| public function up() | |
| { | |
| $this->createTable('post', [ | |
| 'id' => $this->primaryKey() | |
| ]); | |
| } | |
| Drop / Rename / Alter Column | |
| public function up() | |
| { | |
| $this->dropColumn('post', 'position'); | |
| $this->renameColumn('post', 'owner_id', 'user_id'); | |
| $this->alterColumn('post', 'updated', $this->timestamp()->notNull()->defaultValue('0000-00-00 00:00:00')); | |
| } | |
| Добавить колонку | |
| public function up() | |
| { | |
| $this->addColumn('post', 'position', $this->integer()); | |
| } | |
| Возвращение мигрантов | |
| yii migrate/down # revert the most recently applied migration | |
| yii migrate/down 3 # revert the most 3 recently applied migrations | |
| Транзакционные миграции | |
| public function safeUp() | |
| { | |
| $this->createTable('news', [ | |
| 'id' => $this->primaryKey(), | |
| 'title' => $this->string()->notNull(), | |
| 'content' => $this->text(), | |
| ]); | |
| $this->insert('news', [ | |
| 'title' => 'test 1', | |
| 'content' => 'content 1', | |
| ]); | |
| } | |
| public function safeDown() | |
| { | |
| $this->delete('news', ['id' => 1]); | |
| $this->dropTable('news'); | |
| } | |
| Еще более простой способ реализации транзакционных миграций - установить код миграции в safeUp() и safeDown() . Эти два метода отличаются от up() и down() тем, что они неявно заключены в транзакции. В результате, если какая-либо операция в этих методах выходит из строя, все предыдущие операции будут автоматически откатываться. | |
| Перенос нескольких баз данных | |
| По умолчанию миграции применяются к той же базе данных, которая указана компонентом приложения db. Если вы хотите, чтобы их применяли к другой базе данных, вы можете указать опцию командной строки db, как показано ниже: | |
| yii migrate --db=db2 | |
| Повторная миграция | |
| yii migrate/redo # redo the last applied migration | |
| yii migrate/redo 3 # redo the last 3 applied migrations | |
| Миграция листинга | |
| yii migrate/history # showing the last 10 applied migrations | |
| yii migrate/history 5 # showing the last 5 applied migrations | |
| yii migrate/history all # showing all applied migrations | |
| yii migrate/new # showing the first 10 new migrations | |
| yii migrate/new 5 # showing the first 5 new migrations | |
| yii migrate/new all # showing all new migrations | |
| Изменение истории миграции | |
| yii migrate/mark 150101_185401 # using timestamp to specify the migration | |
| yii migrate/mark "2015-01-01 18:54:01" # using a string that can be parsed by strtotime() | |
| yii migrate/mark m150101_185401_create_news_table # using full name | |
| yii migrate/mark 1392853618 # using UNIX timestamp | |
| Применение миграции | |
| yii migrate | |
| Эта команда перечислит все миграции, которые пока не были применены. Если вы подтвердите, что хотите применить эти миграции, он будет запускать метод up () или safeUp () в каждом новом классе миграции один за другим в порядке их значений метки времени. Если какая-либо миграция завершится неудачей, команда завершит работу без применения остальных миграций. | |
| yii migrate 3 | |
| yii migrate/to 150101_185401 # using timestamp to specify the migration | |
| yii migrate/to "2015-01-01 18:54:01" # using a string that can be parsed by strtotime() | |
| yii migrate/to m150101_185401_create_news_table # using full name | |
| yii migrate/to 1392853618 # using UNIX timestamp |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment