diff --git a/src/Illuminate/Database/Migrations/Migrator.php b/src/Illuminate/Database/Migrations/Migrator.php index 00d5acb99cef..7fb10f9e1dfa 100755 --- a/src/Illuminate/Database/Migrations/Migrator.php +++ b/src/Illuminate/Database/Migrations/Migrator.php @@ -204,11 +204,12 @@ public function rollback($paths = [], array $options = []) $this->requireFiles($files); foreach ($migrations as $migration) { + $migration = (object) $migration; $rolledBack[] = $files[$migration->migration]; $this->runDown( $files[$migration->migration], - (object) $migration, Arr::get($options, 'pretend', false) + $migration, Arr::get($options, 'pretend', false) ); } } diff --git a/tests/Database/DatabaseMigratorIntegrationTest.php b/tests/Database/DatabaseMigratorIntegrationTest.php index 0d24b2e25273..57d6c080ec98 100644 --- a/tests/Database/DatabaseMigratorIntegrationTest.php +++ b/tests/Database/DatabaseMigratorIntegrationTest.php @@ -70,6 +70,21 @@ public function testMigrationsCanBeRolledBack() $this->assertTrue(str_contains($rolledBack[1], 'users')); } + public function testMigrationsCanBeRolledBackWithFetchAssocEnabled() + { + $this->db->getConnection()->setFetchMode(\PDO::FETCH_ASSOC); + + $this->migrator->run([__DIR__.'/migrations/one']); + $this->assertTrue($this->db->schema()->hasTable('users')); + $this->assertTrue($this->db->schema()->hasTable('password_resets')); + $rolledBack = $this->migrator->rollback([__DIR__.'/migrations/one']); + $this->assertFalse($this->db->schema()->hasTable('users')); + $this->assertFalse($this->db->schema()->hasTable('password_resets')); + + $this->assertTrue(str_contains($rolledBack[0], 'password_resets')); + $this->assertTrue(str_contains($rolledBack[1], 'users')); + } + public function testMigrationsCanBeReset() { $this->migrator->run([__DIR__.'/migrations/one']);