Skip to content

Commit ba257c8

Browse files
Use Database Prefix (#71)
* Use database prefix (if applicable) * cs fix * Add test for not having a prefix specified
1 parent b9ac034 commit ba257c8

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

src/GeneratorManagers/MySQLGeneratorManager.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
namespace LaravelMigrationGenerator\GeneratorManagers;
44

5+
use Illuminate\Support\Str;
56
use Illuminate\Support\Facades\DB;
7+
use LaravelMigrationGenerator\Definitions\TableDefinition;
68
use LaravelMigrationGenerator\Generators\MySQL\ViewGenerator;
79
use LaravelMigrationGenerator\Generators\MySQL\TableGenerator;
810
use LaravelMigrationGenerator\GeneratorManagers\Interfaces\GeneratorManagerInterface;
@@ -29,4 +31,14 @@ public function init()
2931
}
3032
}
3133
}
34+
35+
public function addTableDefinition(TableDefinition $tableDefinition): BaseGeneratorManager
36+
{
37+
$prefix = config('database.connections.' . DB::getDefaultConnection() . '.prefix', '');
38+
if (! empty($prefix) && Str::startsWith($tableDefinition->getTableName(), $prefix)) {
39+
$tableDefinition->setTableName(Str::replaceFirst($prefix, '', $tableDefinition->getTableName()));
40+
}
41+
42+
return parent::addTableDefinition($tableDefinition);
43+
}
3244
}

tests/Unit/GeneratorManagers/MySQLGeneratorManagerTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Tests\TestCase;
66
use Mockery\MockInterface;
7+
use Illuminate\Support\Facades\DB;
78
use LaravelMigrationGenerator\Definitions\IndexDefinition;
89
use LaravelMigrationGenerator\Definitions\TableDefinition;
910
use LaravelMigrationGenerator\Definitions\ColumnDefinition;
@@ -52,4 +53,33 @@ public function test_can_sort_tables()
5253
$this->assertCount(4, $sorted);
5354
$this->assertStringContainsString('$table->dropForeign', $sorted[3]->formatter()->stubTableDown());
5455
}
56+
57+
public function test_can_remove_database_prefix()
58+
{
59+
$connection = DB::getDefaultConnection();
60+
config()->set('database.connections.' . $connection . '.prefix', 'wp_');
61+
62+
$mocked = $this->partialMock(MySQLGeneratorManager::class, function (MockInterface $mock) {
63+
$mock->shouldReceive('init');
64+
});
65+
66+
$definition = (new TableDefinition())->setTableName('wp_posts');
67+
$mocked->addTableDefinition($definition);
68+
$this->assertEquals('posts', $definition->getTableName());
69+
70+
$definition = (new TableDefinition())->setTableName('posts');
71+
$mocked->addTableDefinition($definition);
72+
$this->assertEquals('posts', $definition->getTableName());
73+
74+
75+
config()->set('database.connections.' . $connection . '.prefix', '');
76+
77+
$definition = (new TableDefinition())->setTableName('wp_posts');
78+
$mocked->addTableDefinition($definition);
79+
$this->assertEquals('wp_posts', $definition->getTableName());
80+
81+
$definition = (new TableDefinition())->setTableName('posts');
82+
$mocked->addTableDefinition($definition);
83+
$this->assertEquals('posts', $definition->getTableName());
84+
}
5585
}

0 commit comments

Comments
 (0)