如何在捆绑包之外配置多个 orm 映射原则

Posted

技术标签:

【中文标题】如何在捆绑包之外配置多个 orm 映射原则【英文标题】:How to configure multiple orm mappings doctrine outside the bundle 【发布时间】:2019-10-21 15:20:30 【问题描述】:

我的项目有两个文件夹,一个是 symfony,另一个是我的项目

我的要求是我有一个类(不是实体)SuperClass 用于我扩展到实体文件的相同属性,因此我还需要在映射中定义类

我学说他们说映射:

                # An array of mappings, which may be a bundle name or something else
                mapping_name:
                    mapping:              true
                    type:                 ~
                    dir:                  ~
                    alias:                ~
                    prefix:               ~
                    is_bundle:            ~

如何定义多个我做了但不工作

orm:
    auto_generate_proxy_classes: true
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true
    mappings:
# not working one time only one mapping working i need to both will work
      Project\Component\User:
        is_bundle: false
        type: xml
        dir: '%kernel.project_dir%/config/orm-mappings/doctrine'
        prefix: 'Project\Component\User'
        alias: Project\Component\User
        mapping: true
# this is working
      Project/User:
        is_bundle: false
        type: xml
        dir: '%kernel.project_dir%/config/orm-mappings/doctrine'
        prefix: 'Project/User'
        alias: Project/User
        mapping: true

我的SuperClass 映射仅不起作用。如果我将我的文件移动到这个 Project/User 中,那么它们会正确绑定并正常工作,但我需要将文件分开

【问题讨论】:

您在每个配置中使用“\”和“/”。也许是这样? 改进格式 【参考方案1】:

我已经创建了一个用于映射SuperClass 的文件夹,所以现在我有两个目录和两个不同的命名空间

mappings:

  Project\Component\User:
    is_bundle: false
    type: xml
    dir: '%kernel.project_dir%/config/orm-mappings/mapping-superclass'
    prefix: 'Project\Component\User'
    alias: Project\Component\User
    mapping: true

  Project\User:
    is_bundle: false
    type: xml
    dir: '%kernel.project_dir%/config/orm-mappings/doctrine'
    prefix: 'Project\User'
    alias: Project\User
    mapping: true

这将为您提供一个用于数据库映射的命名空间 Project\UserSuperClass 命名空间是 Project\Component\User

【讨论】:

对于匆忙阅读本文并试图找出区别的人:请注意,问题在于两个映射都指向同一个目录(请参阅目录配置)。改变它,你就会解决问题。

以上是关于如何在捆绑包之外配置多个 orm 映射原则的主要内容,如果未能解决你的问题,请参考以下文章

如何在可执行文件附近生成 dsym 文件,而不是在捆绑包之外,最好没有安装后脚本?

Maven:如何组装具有多个环境的捆绑包

与配置文件不同的捆绑标识符。

在身份映射之外强制使用 sqlalchemy ORM get()

Hibernate ORM框架——续第二章:Hibernate映射关系:单向关联

在 CRA 中获取捆绑包后如何保留我的隐藏字段(如 api 密钥)