Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 18 additions & 8 deletions packages/database/src/Migrations/MigrationManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -135,16 +135,15 @@ public function rehashAll(): void
return;
}

$migrationsByName = $this->getMigrationsByName();

foreach ($existingMigrations as $existingMigration) {
/**
* We need to find and delete migration DB records that no longer have a corresponding migration file.
* This can happen if a migration file was deleted or renamed.
* If we don't do it, `:validate` will continue failing due to the missing migration file.
*/
$databaseMigration = array_find(
iterator_to_array($this->migrations),
static fn (MigratesUp|MigratesDown $migration) => $migration->name === $existingMigration->name,
);
$databaseMigration = $migrationsByName[$existingMigration->name] ?? null;

if ($databaseMigration === null) {
$existingMigration->delete();
Expand All @@ -166,11 +165,10 @@ public function validate(): void
return;
}

$migrationsByName = $this->getMigrationsByName();

foreach ($existingMigrations as $existingMigration) {
$databaseMigration = array_find(
iterator_to_array($this->migrations),
static fn (MigratesUp|MigratesDown $migration) => $migration->name === $existingMigration->name,
);
$databaseMigration = $migrationsByName[$existingMigration->name] ?? null;

if ($databaseMigration === null) {
event(new MigrationValidationFailed($existingMigration->name, new MigrationFileWasMissing()));
Expand Down Expand Up @@ -301,6 +299,18 @@ private function getTableDefinitions(): array
);
}

/** @return array<string, MigratesUp|MigratesDown> */
private function getMigrationsByName(): array
{
$migrations = [];

foreach ($this->migrations as $migration) {
$migrations[$migration->name] = $migration;
}

return $migrations;
}

private function getMigrationHash(MigratesUp|MigratesDown $migration): string
{
$sql = '';
Expand Down
Loading