Руководство по запуску миграции Laravel по маршруту: несколько методов и примеры кода

Laravel предоставляет надежную систему миграции баз данных, которая позволяет разработчикам управлять изменениями схемы базы данных. По умолчанию миграция выполняется через командную строку с использованием инструмента Artisan CLI от Laravel. Однако существуют сценарии, в которых вам может потребоваться инициировать миграцию непосредственно из маршрута в вашем приложении. В этой статье мы рассмотрим различные методы выполнения миграции Laravel по маршруту, сопровождаемые примерами кода.

Метод 1: использование метода Artisan::call()

use Illuminate\Support\Facades\Artisan;
Route::get('/run-migrations', function () {
    Artisan::call('migrate');
    return 'Migrations executed successfully!';
});

Метод 2: использование Artisan-команд migrate:statusи migrate

use Illuminate\Support\Facades\Artisan;
Route::get('/run-migrations', function () {
    Artisan::call('migrate:status');
    Artisan::call('migrate');
    return 'Migrations executed successfully!';
});

Метод 3: использование класса Migrator

use Illuminate\Database\Migrations\Migrator;
Route::get('/run-migrations', function () {
    $migrator = new Migrator(app(), app('migration.repository'));
    $migrator->run(database_path('migrations'));
    return 'Migrations executed successfully!';
});

Метод 4: использование метода migrateв экземпляре Migrator

use Illuminate\Database\Migrations\Migrator;
Route::get('/run-migrations', function () {
    $migrator = app('migrator');
    $migrator->setOutput(new \Symfony\Component\Console\Output\ConsoleOutput());
    $migrator->run(database_path('migrations'));
    return 'Migrations executed successfully!';
});

Метод 5: использование класса MigrateCommand

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
class RunMigrationsCommand extends Command
{
    protected $signature = 'run:migrations';
    public function handle()
    {
        Artisan::call('migrate');
        $output = Artisan::output();
        $this->info($output);
    }
}
Route::get('/run-migrations', function () {
    Artisan::call('run:migrations');
    return 'Migrations executed successfully!';
});

В этой статье мы рассмотрели различные методы выполнения миграции Laravel по маршруту. Эти методы обеспечивают большую гибкость в управлении изменениями схемы базы данных непосредственно из вашего приложения. Выберите метод, который лучше всего соответствует вашим потребностям, и интегрируйте его в свой проект Laravel. Не забывайте проявлять осторожность при выполнении миграции в производственных средах и всегда выполнять резервное копирование данных перед внесением каких-либо структурных изменений в базу данных.