laravel - Laravel如何自动删除表然后导入sql文件然后应用迁移?
问题描述
由于与其他数据库中的 Laravel 不同的命名约定,我需要在 Laravel 中自动执行此过程:
- 删除所有表
- 导入sql转储文件
- 重播我的迁移,重命名列、FK 等...
我能做些什么来实现这一目标?
php artisan migrate:fresh --seed 命令不起作用,因为它会在最后导入 sql。
解决方案
您可以为此任务编写自定义命令。
创建命令:
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
在生产中运行它之前要小心,我没有测试过。(当然它会丢弃你的数据库)
推荐阅读
- json - Firebase 规则 - 如何将值限制为布尔值?
- javascript - HTML 中的 SVG:如何使用多色 SVG 作为遮罩
- postgresql - 迟来的分区可能吗?
- sql-server - 将多边形附加到多多边形中
- virtualbox - Packer - 1st:如何在机器中创建文件。第二:将机器导出到ova文件
- php - 在模式窗口中发送表单
- c - 如何在 JavaScript 中保存指针并进一步检索
- javascript - 我可以在没有 ref 和 jnChange 的情况下使用表单输入吗?
- r - 如何使用复选框实时更新闪亮的数据框?
- java - Protobuf:原始二进制数据到 json