public function getMigrationsToExecute($direction, $to)
{
if (empty($this->migrations)) {
$this->registerMigrationsFromDirectory($this->getMigrationsDirectory());
}
if ($direction === Version::DIRECTION_DOWN) {
if (count($this->migrations)) {
$allVersions = array_reverse(array_keys($this->migrations));
$classes = array_reverse(array_values($this->migrations));
$allVersions = array_combine($allVersions, $classes);
} else {
$allVersions = [];
}
} else {
$allVersions = $this->migrations;
}
$versions = [];
$migrated = $this->getMigratedVersions();
foreach ($allVersions as $version) {
if ($this->shouldExecuteMigration($direction, $version, $to, $migrated)) {
$versions[$version->getVersion()] = $version;
}
}
return $versions;
}