Symfony4 Doctrine2 自定义 NamingStrategy 如何

Val*_*pan 2 doctrine-orm symfony4

我刚刚开始使用 Symfony4 / Doctrine2。因此,我需要实现 Doctrine2 自定义NamingStrategy,但除此之外找不到任何文档/样本: https: //www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/namingstrategy.html以及这个答案如何在 symfony2 中设置表前缀。他们没有解释如何在与 Symfony4 相关的方面执行此操作。我知道我需要创建一个实现NamingStrategy接口的类,所以我应该将该类放在 Symfony4 文件夹结构中的什么位置src/Entity

然后我需要将类注册为服务,对于经验丰富的 Symfony 开发人员来说一定很容易知道,但由于我刚刚开始,对此进行一些详细说明会很高兴。谢谢,任何意见都会受到赞赏。

Val*_*pan 5

无论如何,我自己已经弄清楚了。

首先,我创建了扩展 UnderscoreNamingStrategy 的自定义命名策略类。我已将其放置在 src/Service/ 下,但仍然不确定这是否是它在文件夹层次结构中的正确位置。

然后我通过将以下内容添加到 config/services.yaml 的末尾来将此类注册为服务:

...

# Naming Strategy
app.naming_strategy.custom:
    class: App\Service\CustomNamingStrategy
    autowire: true
Run Code Online (Sandbox Code Playgroud)

之后,我通过编辑 config/packages/doctrine.yaml 将学说配置为使用此自定义命名策略,如下所示:

我已经注释掉了:

    naming_strategy: doctrine.orm.naming_strategy.underscore
Run Code Online (Sandbox Code Playgroud)

并在其下添加:

    naming_strategy: app.naming_strategy.custom
Run Code Online (Sandbox Code Playgroud)