Laravel 如何自动删除表然后导入 sql 文件然后应用迁移?
Laravel how to automate drop tables then import sql file then apply migration?
由于与其他数据库中的 Laravel 不同的命名约定,我需要在 Laravel 中自动执行此过程:
- 删除所有表
- 导入sql转储文件
- 重播我的迁移,重命名列、FK 等...
我该怎么做才能实现这一目标?
php artisan migrate:fresh --seed 命令不起作用,因为它会在最后导入 sql。
你可以为这个任务写一个custom command。
创建命令:php artisan make:command MigrateDatabase
打开命令文件app/Console/Commands/MigrateDatabase.php
更改命令名称,即:protected $signature = 'migrate_database:migrate';
在handle()
方法中写下这些行:
public function handle(){
Artisan::call('migrate:reset', ['--force' => true]);
DB::unprepared(file_get_contents('full/path/to/dump.sql'));
Artisan::call('migrate');
}
调用命令:php artisan migrate_database:migrate
运行 在生产之前要小心,我没有测试过。 (当然它会降低你的数据库)
由于与其他数据库中的 Laravel 不同的命名约定,我需要在 Laravel 中自动执行此过程:
- 删除所有表
- 导入sql转储文件
- 重播我的迁移,重命名列、FK 等...
我该怎么做才能实现这一目标?
php artisan migrate:fresh --seed 命令不起作用,因为它会在最后导入 sql。
你可以为这个任务写一个custom command。
创建命令:
php artisan make:command MigrateDatabase
打开命令文件
app/Console/Commands/MigrateDatabase.php
更改命令名称,即:
protected $signature = 'migrate_database:migrate';
在
handle()
方法中写下这些行:public function handle(){ Artisan::call('migrate:reset', ['--force' => true]); DB::unprepared(file_get_contents('full/path/to/dump.sql')); Artisan::call('migrate'); }
调用命令:
php artisan migrate_database:migrate
运行 在生产之前要小心,我没有测试过。 (当然它会降低你的数据库)