Skip to content

Commit c99b69b

Browse files
committed
allow to specify table name in make:entity
1 parent 0624f13 commit c99b69b

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

src/Doctrine/EntityClassGenerator.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,17 @@ public function __construct(
4040
) {
4141
}
4242

43-
public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $apiResource, bool $withPasswordUpgrade = false, bool $generateRepositoryClass = true, bool $broadcast = false, EntityIdTypeEnum $useUuidIdentifier = EntityIdTypeEnum::INT): string
43+
public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $apiResource, bool $withPasswordUpgrade, bool $generateRepositoryClass, bool $broadcast, EntityIdTypeEnum $useUuidIdentifier, ?string $tableName): string
4444
{
4545
$repoClassDetails = $this->generator->createClassNameDetails(
4646
$entityClassDetails->getRelativeName(),
4747
'Repository\\',
4848
'Repository'
4949
);
5050

51-
$tableName = $this->doctrineHelper->getPotentialTableName($entityClassDetails->getFullName());
51+
if (null === $tableName) {
52+
$tableName = $this->doctrineHelper->getPotentialTableName($entityClassDetails->getFullName());
53+
}
5254

5355
$useStatements = new UseStatementGenerator([
5456
$repoClassDetails->getFullName(),

src/Maker/MakeEntity.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ public function configureCommand(Command $command, InputConfiguration $inputConf
9797
->addOption('broadcast', 'b', InputOption::VALUE_NONE, 'Add the ability to broadcast entity updates using Symfony UX Turbo?')
9898
->addOption('regenerate', null, InputOption::VALUE_NONE, 'Instead of adding new fields, simply generate the methods (e.g. getter/setter) for existing fields')
9999
->addOption('overwrite', null, InputOption::VALUE_NONE, 'Overwrite any existing getter/setter methods')
100+
->addOption('table-name', null, InputOption::VALUE_NONE, 'Overwrite default table name')
100101
->setHelp($this->getHelpFileContents('MakeEntity.txt'))
101102
;
102103

@@ -194,6 +195,7 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
194195
apiResource: $input->getOption('api-resource'),
195196
broadcast: $broadcast,
196197
useUuidIdentifier: $this->getIdType(),
198+
tableName: $input->getOption('table-name')
197199
);
198200

199201
if ($broadcast) {

tests/Maker/MakeEntityTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,26 @@ public function getTestDetails(): \Generator
119119
}),
120120
];
121121

122+
yield 'it_creates_a_new_class_with_custom_table_name' => [$this->createMakeEntityTest()
123+
->run(function (MakerTestRunner $runner) {
124+
$runner->runMaker([
125+
// entity class name
126+
'User',
127+
// table name
128+
'users',
129+
// no fields
130+
'',
131+
]);
132+
133+
$this->assertFileExists($runner->getPath('src/Entity/User.php'));
134+
135+
$content = file_get_contents($runner->getPath('src/Entity/User.php'));
136+
$this->assertStringContainsString('#[ORM\Table(name: users)]', $content);
137+
138+
$this->runEntityTest($runner);
139+
}),
140+
];
141+
122142
yield 'it_creates_a_new_class_and_api_resource' => [$this->createMakeEntityTest()
123143
// @legacy - re-enable test when https://github.com/symfony/recipes/pull/1339 is merged
124144
->skipTest('Waiting for https://github.com/symfony/recipes/pull/1339')

0 commit comments

Comments
 (0)