Полное руководство: перенос одного файла в Laravel

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

Метод 1: использование команды Artisan migrate
Самый простой способ перенести один файл — использовать команду Artisan migrateс командой --pathвариант. Опция --pathпозволяет указать путь к одному файлу миграции. Вот пример:

php artisan migrate --path=/database/migrations/2022_01_01_000000_create_users_table.php

Метод 2: создание пользовательской команды миграции
Другой подход заключается в создании пользовательской команды миграции, которая принимает путь к файлу в качестве аргумента. Это дает вам больше гибкости и позволяет при необходимости определять собственную логику. Вот пример того, как можно создать собственную команду:

namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
class MigrateSingleFileCommand extends Command
{
    protected $signature = 'migrate:single {path}';
    protected $description = 'Migrate a single file';
    public function handle()
    {
        $path = $this->argument('path');
        Artisan::call('migrate', [
            '--path' => $path,
        ]);
        $this->info('Migration complete!');
    }
}

Метод 3: выполнение вручную с использованием класса MigrationRepository
Если вы предпочитаете более ручной подход, вы можете использовать класс MigrationRepositoryдля выполнения одного файла миграции. Вот пример:

use Illuminate\Database\Migrations\MigrationRepositoryInterface;
use Illuminate\Database\Migrations\Migrator;
function migrateSingleFile($path)
{
    $repository = app(MigrationRepositoryInterface::class);
    $migrator = app(Migrator::class);

    $migrator->setRepository($repository);
    $migrator->run([$path], []);

    echo "Migration complete!";
}
// Usage
migrateSingleFile('/database/migrations/2022_01_01_000000_create_users_table.php');

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