From c99b69b27e8b41b55b26981d828280483f6b911b Mon Sep 17 00:00:00 2001 From: MrYamous Date: Mon, 30 Dec 2024 10:04:17 +0100 Subject: [PATCH 1/4] allow to specify table name in make:entity --- src/Doctrine/EntityClassGenerator.php | 6 ++++-- src/Maker/MakeEntity.php | 2 ++ tests/Maker/MakeEntityTest.php | 20 ++++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/Doctrine/EntityClassGenerator.php b/src/Doctrine/EntityClassGenerator.php index a54790b77..175c54deb 100644 --- a/src/Doctrine/EntityClassGenerator.php +++ b/src/Doctrine/EntityClassGenerator.php @@ -40,7 +40,7 @@ public function __construct( ) { } - public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $apiResource, bool $withPasswordUpgrade = false, bool $generateRepositoryClass = true, bool $broadcast = false, EntityIdTypeEnum $useUuidIdentifier = EntityIdTypeEnum::INT): string + public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $apiResource, bool $withPasswordUpgrade, bool $generateRepositoryClass, bool $broadcast, EntityIdTypeEnum $useUuidIdentifier, ?string $tableName): string { $repoClassDetails = $this->generator->createClassNameDetails( $entityClassDetails->getRelativeName(), @@ -48,7 +48,9 @@ public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $ 'Repository' ); - $tableName = $this->doctrineHelper->getPotentialTableName($entityClassDetails->getFullName()); + if (null === $tableName) { + $tableName = $this->doctrineHelper->getPotentialTableName($entityClassDetails->getFullName()); + } $useStatements = new UseStatementGenerator([ $repoClassDetails->getFullName(), diff --git a/src/Maker/MakeEntity.php b/src/Maker/MakeEntity.php index e0498f36b..01325fae2 100644 --- a/src/Maker/MakeEntity.php +++ b/src/Maker/MakeEntity.php @@ -97,6 +97,7 @@ public function configureCommand(Command $command, InputConfiguration $inputConf ->addOption('broadcast', 'b', InputOption::VALUE_NONE, 'Add the ability to broadcast entity updates using Symfony UX Turbo?') ->addOption('regenerate', null, InputOption::VALUE_NONE, 'Instead of adding new fields, simply generate the methods (e.g. getter/setter) for existing fields') ->addOption('overwrite', null, InputOption::VALUE_NONE, 'Overwrite any existing getter/setter methods') + ->addOption('table-name', null, InputOption::VALUE_NONE, 'Overwrite default table name') ->setHelp($this->getHelpFileContents('MakeEntity.txt')) ; @@ -194,6 +195,7 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen apiResource: $input->getOption('api-resource'), broadcast: $broadcast, useUuidIdentifier: $this->getIdType(), + tableName: $input->getOption('table-name') ); if ($broadcast) { diff --git a/tests/Maker/MakeEntityTest.php b/tests/Maker/MakeEntityTest.php index 54059bad3..22bc3369a 100644 --- a/tests/Maker/MakeEntityTest.php +++ b/tests/Maker/MakeEntityTest.php @@ -119,6 +119,26 @@ public function getTestDetails(): \Generator }), ]; + yield 'it_creates_a_new_class_with_custom_table_name' => [$this->createMakeEntityTest() + ->run(function (MakerTestRunner $runner) { + $runner->runMaker([ + // entity class name + 'User', + // table name + 'users', + // no fields + '', + ]); + + $this->assertFileExists($runner->getPath('src/Entity/User.php')); + + $content = file_get_contents($runner->getPath('src/Entity/User.php')); + $this->assertStringContainsString('#[ORM\Table(name: users)]', $content); + + $this->runEntityTest($runner); + }), + ]; + yield 'it_creates_a_new_class_and_api_resource' => [$this->createMakeEntityTest() // @legacy - re-enable test when https://github.com/symfony/recipes/pull/1339 is merged ->skipTest('Waiting for https://github.com/symfony/recipes/pull/1339') From dc7141664a938ade908212c65d497d1104738884 Mon Sep 17 00:00:00 2001 From: MrYamous Date: Mon, 30 Dec 2024 10:07:21 +0100 Subject: [PATCH 2/4] revert unwanted tool changes --- src/Doctrine/EntityClassGenerator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Doctrine/EntityClassGenerator.php b/src/Doctrine/EntityClassGenerator.php index 175c54deb..e6d490882 100644 --- a/src/Doctrine/EntityClassGenerator.php +++ b/src/Doctrine/EntityClassGenerator.php @@ -40,7 +40,7 @@ public function __construct( ) { } - public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $apiResource, bool $withPasswordUpgrade, bool $generateRepositoryClass, bool $broadcast, EntityIdTypeEnum $useUuidIdentifier, ?string $tableName): string + public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $apiResource, bool $withPasswordUpgrade = false, bool $generateRepositoryClass = true, bool $broadcast = false, EntityIdTypeEnum $useUuidIdentifier = EntityIdTypeEnum::INT, ?string $tableName): string { $repoClassDetails = $this->generator->createClassNameDetails( $entityClassDetails->getRelativeName(), From 96304b4bc06e934eb4e273d8522081540599a771 Mon Sep 17 00:00:00 2001 From: MrYamous Date: Thu, 16 Jan 2025 19:39:52 +0100 Subject: [PATCH 3/4] apply suggestions --- src/Doctrine/EntityClassGenerator.php | 2 +- src/Maker/MakeEntity.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Doctrine/EntityClassGenerator.php b/src/Doctrine/EntityClassGenerator.php index e6d490882..f51ba7658 100644 --- a/src/Doctrine/EntityClassGenerator.php +++ b/src/Doctrine/EntityClassGenerator.php @@ -40,7 +40,7 @@ public function __construct( ) { } - public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $apiResource, bool $withPasswordUpgrade = false, bool $generateRepositoryClass = true, bool $broadcast = false, EntityIdTypeEnum $useUuidIdentifier = EntityIdTypeEnum::INT, ?string $tableName): string + public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $apiResource, bool $withPasswordUpgrade = false, bool $generateRepositoryClass = true, bool $broadcast = false, EntityIdTypeEnum $useUuidIdentifier = EntityIdTypeEnum::INT, string $tableName = null): string { $repoClassDetails = $this->generator->createClassNameDetails( $entityClassDetails->getRelativeName(), diff --git a/src/Maker/MakeEntity.php b/src/Maker/MakeEntity.php index 01325fae2..55ba3c6f1 100644 --- a/src/Maker/MakeEntity.php +++ b/src/Maker/MakeEntity.php @@ -97,7 +97,7 @@ public function configureCommand(Command $command, InputConfiguration $inputConf ->addOption('broadcast', 'b', InputOption::VALUE_NONE, 'Add the ability to broadcast entity updates using Symfony UX Turbo?') ->addOption('regenerate', null, InputOption::VALUE_NONE, 'Instead of adding new fields, simply generate the methods (e.g. getter/setter) for existing fields') ->addOption('overwrite', null, InputOption::VALUE_NONE, 'Overwrite any existing getter/setter methods') - ->addOption('table-name', null, InputOption::VALUE_NONE, 'Overwrite default table name') + ->addOption('table-name', 't', InputOption::VALUE_NONE, 'Overwrite default table name') ->setHelp($this->getHelpFileContents('MakeEntity.txt')) ; From fc427d4a2b3f31f10e7656b8b743758084418f15 Mon Sep 17 00:00:00 2001 From: MrYamous Date: Sat, 18 Jan 2025 11:12:58 +0100 Subject: [PATCH 4/4] apply changes --- src/Doctrine/EntityClassGenerator.php | 2 +- src/Maker/MakeEntity.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Doctrine/EntityClassGenerator.php b/src/Doctrine/EntityClassGenerator.php index f51ba7658..804388bb0 100644 --- a/src/Doctrine/EntityClassGenerator.php +++ b/src/Doctrine/EntityClassGenerator.php @@ -40,7 +40,7 @@ public function __construct( ) { } - public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $apiResource, bool $withPasswordUpgrade = false, bool $generateRepositoryClass = true, bool $broadcast = false, EntityIdTypeEnum $useUuidIdentifier = EntityIdTypeEnum::INT, string $tableName = null): string + public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $apiResource, bool $withPasswordUpgrade = false, bool $generateRepositoryClass = true, bool $broadcast = false, EntityIdTypeEnum $useUuidIdentifier = EntityIdTypeEnum::INT, ?string $tableName = null): string { $repoClassDetails = $this->generator->createClassNameDetails( $entityClassDetails->getRelativeName(), diff --git a/src/Maker/MakeEntity.php b/src/Maker/MakeEntity.php index 55ba3c6f1..8c92f4a17 100644 --- a/src/Maker/MakeEntity.php +++ b/src/Maker/MakeEntity.php @@ -97,7 +97,7 @@ public function configureCommand(Command $command, InputConfiguration $inputConf ->addOption('broadcast', 'b', InputOption::VALUE_NONE, 'Add the ability to broadcast entity updates using Symfony UX Turbo?') ->addOption('regenerate', null, InputOption::VALUE_NONE, 'Instead of adding new fields, simply generate the methods (e.g. getter/setter) for existing fields') ->addOption('overwrite', null, InputOption::VALUE_NONE, 'Overwrite any existing getter/setter methods') - ->addOption('table-name', 't', InputOption::VALUE_NONE, 'Overwrite default table name') + ->addOption('table-name', 't', InputOption::VALUE_NONE, 'Set custom table name') ->setHelp($this->getHelpFileContents('MakeEntity.txt')) ;