我想要的
仅回退:
回滚:2015_05_15_195423_alter_table_web_directories
我跑
PHP artisan migrate:rollback,我的3个迁移都在回滚。
Rolled back: 2015_05_15_195423_alter_table_web_directories
Rolled back: 2015_05_13_135240_create_web_directories_table
Rolled back: 2015_05_13_134411_create_contacts_table
我删除
我的web_directory和我的联系人表都是无意的。我不希望发生这种情况,如果我只能回滚特定的一个,这种灾难就永远不会发生。
最好的方法是创建一个新的迁移,并在其中进行所需的更改。
最坏的情况下的解决方案(如果你有DB的访问权限,加上你可以对该表的数据进行重置):
转到DB,为特定的迁移删除/重命名迁移条目
删除由您的特定迁移创建的表
运行php artisan migrate——path=/database/migrations/your-specific-migration.php
这将迫使laravel运行特定的迁移,因为在laravel的迁移历史中不存在关于它的条目
更新:Laravel方式(谢谢,@thiago-valente)
运行:
PHP工匠迁移:rollback——path=/database/migrations/your-specific-migration.php
然后:
PHP工匠迁移
这将重新运行特定的迁移
如果你不能做到@Martin Bean告诉你的,那么你可以尝试另一个技巧。
创建一个新的迁移,在该文件上,在up()方法中插入你想要回滚的迁移的down()方法中的内容,在down()方法中插入up()方法中的内容。
例如,如果你最初的迁移是这样的
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id')->unsigned();
$table->string('name');
});
}
public function down()
{
Schema::drop('users');
}
然后在新的迁移文件中这样做
public function up()
{
Schema::drop('users');
}
public function down()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id')->unsigned();
$table->string('name');
});
}
然后运行migrate,它会删除这个表。
如果你想要回滚它。
如果您想修改原始迁移文件并再次迁移它,您可以使用这个包进行迁移。(适用于Laravel 5.4或以上版本)
首先,在你的Laravel项目中安装包:
composer require caloskao/migrate-specific
在app/Console/Kernel.php中注册命令:
protected $commands = [
\CalosKao\MigrateSpecific::class
];
现在,运行这个命令来迁移文件
php artisan migrate:specific database/migrations/table.php