Skip to content

Instantly share code, notes, and snippets.

@paxperscientiam
Forked from jaceju/migration.php
Created April 30, 2021 03:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paxperscientiam/9c680561371dcdf98e0546901ee62591 to your computer and use it in GitHub Desktop.
Save paxperscientiam/9c680561371dcdf98e0546901ee62591 to your computer and use it in GitHub Desktop.
Use Laravel Migration standalone
<?php
use Illuminate\Container\Container;
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Database\ConnectionResolverInterface;
use Illuminate\Database\Migrations\DatabaseMigrationRepository;
use Illuminate\Database\Migrations\MigrationRepositoryInterface;
use Illuminate\Database\Migrations\Migrator;
use Illuminate\Events\Dispatcher;
require __DIR__ . '/vendor/autoload.php';
/**
* 設定資料庫連線
*/
$capsule = new Capsule();
$capsule->addConnection([
'driver' => 'sqlite',
'database' => ':memory:',
]);
$capsule->setEventDispatcher(new Dispatcher(new Container));
$capsule->setAsGlobal();
$capsule->bootEloquent();
/**
* 初始化必要參數
*/
$container = Container::getInstance();
$databaseMigrationRepository = new DatabaseMigrationRepository($capsule->getDatabaseManager(), 'migration');
$databaseMigrationRepository->createRepository();
$container->instance(MigrationRepositoryInterface::class, $databaseMigrationRepository);
$container->instance(ConnectionResolverInterface::class, $capsule->getDatabaseManager());
/**
* 執行 migration
*/
$paths = [
__DIR__ . '/migrations',
];
/** @var Migrator $migrator */
$migrator = $container->make(Migrator::class);
$migrator->run($paths);
var_dump($migrator->getNotes());
/**
* 執行 rollback
*/
$migrator->rollback($paths);
var_dump($migrator->getNotes());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment