如何回滚插件在 OctoberCMS 中的迁移?
How to rollback plugin's migration in OctoberCMS?
我已经通过一次迁移创建了插件。我的version.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
成功 运行 此迁移。
但现在我想回滚此迁移。正如我所见,table migrations
中没有关于此迁移的信息。所以我无法使用命令 php artisan migrate:rollback
.
回滚此迁移
我发现 table system_plugin_versions
中包含有关插件版本的信息。我已经手动删除了我的 table mnv_news_read
并手动删除了 system_plugin_versions
和 system_plugin_history
table 中的相应记录。
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
。它成功完成。
我的问题是如何正确回滚插件的迁移?
回滚迁移的一种方法是通过管理控制面板中的 builder plugin(如果尚未安装此插件,请确保先安装)。
- Select 构建器插件菜单(从页面顶部开始)
- Select 您的插件(通过单击箭头“>”按钮)
- 从左侧菜单,select
Versions
- Select要回滚的版本
- 单击
Rollback version
按钮
根据documentation,您可以在控制台运行命令:
php artisan plugin:rollback AuthorName.PluginName 1.2.3
我已经通过一次迁移创建了插件。我的version.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
成功 运行 此迁移。
但现在我想回滚此迁移。正如我所见,table migrations
中没有关于此迁移的信息。所以我无法使用命令 php artisan migrate:rollback
.
我发现 table system_plugin_versions
中包含有关插件版本的信息。我已经手动删除了我的 table mnv_news_read
并手动删除了 system_plugin_versions
和 system_plugin_history
table 中的相应记录。
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
。它成功完成。
我的问题是如何正确回滚插件的迁移?
回滚迁移的一种方法是通过管理控制面板中的 builder plugin(如果尚未安装此插件,请确保先安装)。
- Select 构建器插件菜单(从页面顶部开始)
- Select 您的插件(通过单击箭头“>”按钮)
- 从左侧菜单,select
Versions
- Select要回滚的版本
- 单击
Rollback version
按钮
根据documentation,您可以在控制台运行命令:
php artisan plugin:rollback AuthorName.PluginName 1.2.3