Как отменить миграцию плагина в OctoberCMS?

Я создал плагин с одной миграцией. Моя версия .yaml

1.0.1: First version of user
1.0.2:
    - Added new fields to User model
    - alter_table_users_add_contact_fields.php

Мой каталог обновлений содержит один файл миграции alter_table_users_add_contact_fields.php.

<?php

namespace Mnv\Reminder\Updates;

use Schema;
use October\Rain\Database\Updates\Migration;

class CreateTableNewsRead extends Migration
{
    protected $table = 'mnv_news_read';

    public function up()
    {
        Schema::create($this->table, function($table)
        {
            $table->engine = 'InnoDB';
            $table->increments('id');

            $table->integer('news_id');
            $table->foreign('news_id')->references('id')->on('rainlab_blog_posts')->onUpdate('cascade')->onDelete('cascade');

            $table->integer('user_id');
            $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');

            $table->timestamp('read_at');

            $table->index([
                'news_id',
                'user_id',
            ]);

            $table->index([
                'user_id',
                'news_id',
            ]);
        });
    }

    public function down()
    {
        Schema::dropIfExists($this->table);
    }
}

Я успешно выполнил эту миграцию с помощью консольной команды php artisan october:up.

Но теперь я хочу откатить эту миграцию. Как я вижу, информации об этой миграции в таблице migrations нет. Поэтому я не могу отменить эту миграцию с помощью команды php artisan migrate:rollback.

Я обнаружил, что информация о версии плагина содержится в таблице system_plugin_versions. Я вручную удалил свою таблицу mnv_news_read и вручную удалил соответствующие записи из таблиц system_plugin_versions и system_plugin_history.

drop table mnv_news_read;
delete from system_plugin_history where code = 'Mnv.Reminder';
delete from system_plugin_versions where code = 'Mnv.Reminder';

После этого я снова попытался запустить php artisan october:up. Он успешно завершен.

Мой вопрос: как правильно откатить миграцию плагина?


person Nick    schedule 26.06.2017    source источник


Ответы (2)


Один из способов отката миграций — с помощью плагина компоновщика в панели управления администратора (обязательно установите этот плагин первым, если вы еще этого не сделали).

  1. Выберите меню плагина конструктора (в верхней части страницы)
  2. Выберите свой плагин (нажав кнопку со стрелкой '>')
  3. В меню слева выберите Versions
  4. Выберите версию, которую вы хотите откатить
  5. Нажмите кнопку Rollback version
person B Faley    schedule 28.06.2017
comment
Есть ли способ сделать это из консоли? - person paishin; 13.07.2020

Согласно документации, вы можете запустить команду в консоли:

php artisan plugin:rollback AuthorName.PluginName 1.2.3
person Алексей Курганский    schedule 20.04.2021