Skip to content

Commit 7241a6b

Browse files
Merge pull request #11 from nikolajlovenhardt/1.0
Fixed issue with migrate when there are non-existing previously executed migrations in db
2 parents 36d37d1 + f9b3381 commit 7241a6b

File tree

3 files changed

+25
-21
lines changed

3 files changed

+25
-21
lines changed

src/Console/MigrateCommand.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,16 @@ public function fire(ConfigurationProvider $provider, Migrator $migrator)
5656
$configuration,
5757
$this->argument('version')
5858
);
59-
} catch (ExecutedUnavailableMigrationsException $e) {
60-
$this->handleExecutedUnavailableMigrationsException($e, $configuration);
6159
} catch (MigrationVersionException $e) {
6260
$this->error($e->getMessage());
6361
}
6462

63+
try {
64+
$migration->checkIfNotExecutedUnavailableMigrations();
65+
} catch (ExecutedUnavailableMigrationsException $e) {
66+
$this->handleExecutedUnavailableMigrationsException($e, $configuration);
67+
}
68+
6569
if ($path = $this->option('write-sql')) {
6670
$migrator->migrateToFile($migration, $path);
6771
} else {

src/Migration.php

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ public function __construct(Configuration $configuration, $version = 'latest')
3535
$this->configuration = $configuration;
3636
$this->makeMigration($configuration);
3737
$this->setVersion($configuration, $version);
38-
39-
$this->checkIfNotExecutedUnavailableMigrations($configuration);
4038
}
4139

4240
/**
@@ -49,23 +47,6 @@ protected function makeMigration(Configuration $configuration)
4947
return $this->migration = new DBALMigration($configuration);
5048
}
5149

52-
/**
53-
* @param Configuration $configuration
54-
*
55-
* @throws ExecutedUnavailableMigrationsException
56-
*/
57-
protected function checkIfNotExecutedUnavailableMigrations(Configuration $configuration)
58-
{
59-
$executedUnavailableMigrations = array_diff(
60-
$configuration->getMigratedVersions(),
61-
$configuration->getAvailableVersions()
62-
);
63-
64-
if (count($executedUnavailableMigrations) > 0) {
65-
throw new ExecutedUnavailableMigrationsException($executedUnavailableMigrations);
66-
}
67-
}
68-
6950
/**
7051
* @return DBALMigration
7152
*/
@@ -96,6 +77,23 @@ protected function setVersion(Configuration $configuration, $versionAlias)
9677
$this->version = $version;
9778
}
9879

80+
/**
81+
* @throws ExecutedUnavailableMigrationsException
82+
*/
83+
public function checkIfNotExecutedUnavailableMigrations()
84+
{
85+
$configuration = $this->configuration;
86+
87+
$executedUnavailableMigrations = array_diff(
88+
$configuration->getMigratedVersions(),
89+
$configuration->getAvailableVersions()
90+
);
91+
92+
if (count($executedUnavailableMigrations) > 0) {
93+
throw new ExecutedUnavailableMigrationsException($executedUnavailableMigrations);
94+
}
95+
}
96+
9997
/**
10098
* @return string|null
10199
*/

tests/MigrationTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ public function test_throw_exception_when_executed_unavailable_migrations()
5858
$this->configuration,
5959
'latest'
6060
);
61+
62+
$migration->checkIfNotExecutedUnavailableMigrations();
6163
}
6264

6365
public function test_throw_exception_when_no_version()

0 commit comments

Comments
 (0)