Skip to content

Instantly share code, notes, and snippets.

@jaceju
Created March 9, 2018 03:01
Show Gist options
  • Select an option

  • Save jaceju/cc53d2fbab6e828f69b2a3b7e267d1ed to your computer and use it in GitHub Desktop.

Select an option

Save jaceju/cc53d2fbab6e828f69b2a3b7e267d1ed to your computer and use it in GitHub Desktop.

Revisions

  1. jaceju created this gist Mar 9, 2018.
    52 changes: 52 additions & 0 deletions migration.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,52 @@
    <?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());