From 64ef494125d814e7928ff591638d1d0da00f1ed6 Mon Sep 17 00:00:00 2001 From: omgslinux Date: Tue, 26 Aug 2025 04:07:42 +0200 Subject: [PATCH 1/6] Add the option, the question and pass the value to the generator --- src/Maker/MakeEntity.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Maker/MakeEntity.php b/src/Maker/MakeEntity.php index e0498f36b..95e7ec095 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', null, InputOption::VALUE_OPTIONAL, 'Allow specify the table name') ->setHelp($this->getHelpFileContents('MakeEntity.txt')) ; @@ -186,14 +187,31 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen 'Entity\\' ); + if (!$input->getOption('table')) { + $potentialTableName = $this->doctrineHelper->getPotentialTableName($input->getArgument('name')); + + $tableName = $io->ask( + sprintf('Enter the database table name (e.g. `%s`)', $potentialTableName), + $potentialTableName + ); + $input->setOption('table', $tableName); + } + + $classExists = class_exists($entityClassDetails->getFullName()); if (!$classExists) { + $tableName = $input->getOption('table'); + $broadcast = $input->getOption('broadcast'); $entityPath = $this->entityClassGenerator->generateEntityClass( entityClassDetails: $entityClassDetails, apiResource: $input->getOption('api-resource'), broadcast: $broadcast, useUuidIdentifier: $this->getIdType(), + params: + [ + 'tableName' => $tableName, + ] ); if ($broadcast) { From f3b6f458baa287153c7c6cd5aa57528d951fb436 Mon Sep 17 00:00:00 2001 From: omgslinux Date: Tue, 26 Aug 2025 04:08:42 +0200 Subject: [PATCH 2/6] Adjust to get params and prepare for the template --- src/Doctrine/EntityClassGenerator.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Doctrine/EntityClassGenerator.php b/src/Doctrine/EntityClassGenerator.php index a54790b77..0abecb6b8 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 = false, bool $generateRepositoryClass = true, bool $broadcast = false, EntityIdTypeEnum $useUuidIdentifier = EntityIdTypeEnum::INT, array $params = []): string { $repoClassDetails = $this->generator->createClassNameDetails( $entityClassDetails->getRelativeName(), @@ -48,7 +48,7 @@ public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $ 'Repository' ); - $tableName = $this->doctrineHelper->getPotentialTableName($entityClassDetails->getFullName()); + $potentialTableName = $this->doctrineHelper->getPotentialTableName($entityClassDetails->getFullName()); $useStatements = new UseStatementGenerator([ $repoClassDetails->getFullName(), @@ -85,8 +85,9 @@ public function generateEntityClass(ClassNameDetails $entityClassDetails, bool $ 'repository_class_name' => $repoClassDetails->getShortName(), 'api_resource' => $apiResource, 'broadcast' => $broadcast, - 'should_escape_table_name' => $this->doctrineHelper->isKeyword($tableName), - 'table_name' => $tableName, + 'is_keyword' => $this->doctrineHelper->isKeyword($params['tableName']), + 'table_name' => $params['tableName'], + 'should_render_table_annotation' => $params['tableName'] != $potentialTableName, 'id_type' => $useUuidIdentifier, ] ); From 93f07289858582bf9da739487f7e3aeadfae9a3d Mon Sep 17 00:00:00 2001 From: omgslinux Date: Tue, 26 Aug 2025 04:09:07 +0200 Subject: [PATCH 3/6] Adjust the template for the parameters --- templates/doctrine/Entity.tpl.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/templates/doctrine/Entity.tpl.php b/templates/doctrine/Entity.tpl.php index 00d08aa90..4193a3fd3 100644 --- a/templates/doctrine/Entity.tpl.php +++ b/templates/doctrine/Entity.tpl.php @@ -10,8 +10,9 @@ #[ORM\Entity(repositoryClass: ::class)] -#[ORM\Table(name: '``')] - + +#[ORM\Table(name: '')] + #[ApiResource] From 821be3004b4253e522de6a59a58a9cd07c0071ae Mon Sep 17 00:00:00 2001 From: omgslinux Date: Tue, 26 Aug 2025 04:25:41 +0200 Subject: [PATCH 4/6] Fix coding standards --- src/Maker/MakeEntity.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Maker/MakeEntity.php b/src/Maker/MakeEntity.php index 95e7ec095..d763da05b 100644 --- a/src/Maker/MakeEntity.php +++ b/src/Maker/MakeEntity.php @@ -208,8 +208,7 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen apiResource: $input->getOption('api-resource'), broadcast: $broadcast, useUuidIdentifier: $this->getIdType(), - params: - [ + params: [ 'tableName' => $tableName, ] ); From eabfa3c4cd5bec3abc3098260a431777916ba8b3 Mon Sep 17 00:00:00 2001 From: omgslinux Date: Tue, 26 Aug 2025 04:31:58 +0200 Subject: [PATCH 5/6] Fix coding for sprintf --- src/Maker/MakeEntity.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Maker/MakeEntity.php b/src/Maker/MakeEntity.php index d763da05b..0d7e42faf 100644 --- a/src/Maker/MakeEntity.php +++ b/src/Maker/MakeEntity.php @@ -191,7 +191,7 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen $potentialTableName = $this->doctrineHelper->getPotentialTableName($input->getArgument('name')); $tableName = $io->ask( - sprintf('Enter the database table name (e.g. `%s`)', $potentialTableName), + \sprintf('Enter the database table name (e.g. `%s`)', $potentialTableName), $potentialTableName ); $input->setOption('table', $tableName); From 97d156278fd45e380e06af3cb13d4c9597c2a3ab Mon Sep 17 00:00:00 2001 From: omgslinux Date: Tue, 26 Aug 2025 04:33:42 +0200 Subject: [PATCH 6/6] Fix coding for extra line --- src/Maker/MakeEntity.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Maker/MakeEntity.php b/src/Maker/MakeEntity.php index 0d7e42faf..5faccf610 100644 --- a/src/Maker/MakeEntity.php +++ b/src/Maker/MakeEntity.php @@ -197,7 +197,6 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen $input->setOption('table', $tableName); } - $classExists = class_exists($entityClassDetails->getFullName()); if (!$classExists) { $tableName = $input->getOption('table');