3.1. Usage Example¶
The following example illustrates how you can use Baleen migrations from within your code to trigger a set of existing migrations.
<?php #!/bin/env/php require __DIR__ . '/vendor/autoload.php'; // The repository is in charge of loading all available migrations. $repository = new DirectoryRepositoryMapper(__DIR__ . '/migrations'); $available = $repository->getAllAvailableMigrations(); /* The Storage retrieves a list of versions that have already been run. Here we're loading from a file, but it could also be a DB table, API call, etc. */ // requires package "baleen/storage-flysystem" $storage = new FlyStorage(__DIR__ . '/versions.txt'); $migrated = $storage->fetchAll(); $timelineFactory = new TimelineFactory(); /* The Timeline sorts migrations in order and runs them based on their status */ $timeline = $timelineFactory->create($available, $migrated); // Say we want to make sure all migrations up to and including v015 are UP: $timeline->upTowards('v015'); // Now lets revert all migrations down to version 13 (inclusive) $timeline->downTowards('v013'); // will revert 15, 14 and 13 - in that order /* You can also run a single migration in any direction and pass custom arguments to the Migration. */ use Baleen\Migration\Options; $options = (new Options())->withCustom([ 'notifyEmail' => 'firstname.lastname@example.org', ]); $timeline->runSingle('v100', $options); /* Delta 'v100' will receive an instance of RunOptions through the setOptions method. You can also pass RunOptions to most of the other Timeline methods. */