为Symfony MakerBundle定义默认的@GeneratedValue策略

问题描述 投票:0回答:1

当在Symfony(4)中使用MakerBundle创建新实体(make:entity EntityName)时,默认情况下会生成一个带注释(如果启用了注释)@GeneratedValue的id。

@GeneratedValue意味着@GeneratedValue(strategy="AUTO")

根据Doctrine documentationAUTO策略应该使用SERIAL类型作为PostgreSQL中的id。但是,我不知道为什么在我的情况下,AUTO策略使用SEQUENCE作为id。

然后,我可以强制它使用SERIAL通过手动更改为@GeneratedValue(strategy="IDENTITY"),这意味着在PostgreSQL中使用SERIAL类型。

有没有办法更改MakerBundle为使用@GeneratedValue(strategy="IDENTITY")注释创建的新实体创建的默认@GeneratedValue注释?

symfony doctrine symfony-4.2
1个回答
0
投票

您可能做的是decorate \Symfony\Bundle\MakerBundle\Doctrine\EntityClassGenerator,它注册为名为maker.entity_class_generator in vendor/symfony/maker-bundle/src/Resources/config/services.xml的服务,并覆盖其generateEntityClass方法,以对GeneratorgenerateClass方法进行不同的调用,特别是文件路径可以在那里更改。

看起来像文件路径可能是相对的或绝对的,所以通过一些试验和错误,你可以得到它输出你想要的注释。制作工具包现在使用的模板位于vendor/symfony/maker-bundle/src/Resources/skeleton/doctrine/Entity.tpl.php,修改非常简单。

© www.soinside.com 2019 - 2024. All rights reserved.