Laravel, как автоматизировать отбрасываемые таблицы, затем импортировать файл sql, а затем применить миграцию?

Из-за других соглашений об именах, чем Laravel в другой базе данных, мне нужно автоматизировать этот процесс в Laravel:

  1. Удалить все таблицы
  2. импортировать файл дампа sql
  3. воспроизвести мою миграцию, которая переименовывает столбцы, FK и т. д....

Что я мог сделать, чтобы добиться этого?

Команда php artisan migrate:fresh --seed не будет работать, потому что она будет импортировать sql последним.


person Eloise85    schedule 28.01.2021    source источник


Ответы (1)


Вы можете написать специальную команду для этой задачи.

  1. Создайте команду: php artisan make:command MigrateDatabase

  2. Откройте командный файл app/Console/Commands/MigrateDatabase.php

  3. Измените имя команды, т.е. на это: protected $signature = 'migrate_database:migrate';

  4. Напишите эти строки в методе handle():

    public function handle(){
        Artisan::call('migrate:reset', ['--force' => true]);
        DB::unprepared(file_get_contents('full/path/to/dump.sql'));
        Artisan::call('migrate');
    }
    
  5. Вызовите команду: php artisan migrate_database:migrate

Будьте осторожны, прежде чем запускать это в производство, я не проверял. (И, конечно же, это приведет к падению вашей базы данных)

person fff    schedule 28.01.2021
comment
Большое спасибо именно то, что я искал! ???? - person Eloise85; 29.01.2021