【问题标题】:Doctrine: many-to-many, self-referencing BUT using yaml mapping file原则:多对多、自引用但使用 yaml 映射文件
【发布时间】:2017-02-09 20:38:27
【问题描述】:

我需要在对象之间创建一种关系,其中一个对象可以具有相同类型的父级和子级。

考虑一下类似于类别树的东西,其中一个类别可以有一个父类别(或多个父类别),也可以有一个子类别(或多个子类别)。

所以,Doctrine explains how to do this 但该示例使用 annotations。

但在我的项目中,我使用 yaml 文件来描述映射,我不知道如何将 Doctrine 的示例转换为 yaml。

有人可以帮帮我吗?

【问题讨论】:

    标签: php symfony doctrine-orm doctrine


    【解决方案1】:

    好的,这就是解决方案:

    manyToMany:
        parentDependencies:
            targetEntity: SerendipityHQ\Bundle\QueuesBundle\Entity\Job
            inversedBy: childDependencies
            joinTable:
                name: queues_jobs_chains
                joinColumns:
                    child_job:
                        referencedColumnName: id
                inverseJoinColumns:
                    parent_job:
                        referencedColumnName: id
        childDependencies:
            targetEntity: SerendipityHQ\Bundle\QueuesBundle\Entity\Job
            mappedBy: parentDependencies
    

    【讨论】:

      【解决方案2】:

      我鼓励你学习Doctrine提供的YAML Mapping Documentation。

      还请注意,您可以使用教义提供的orm:convert-mapping 命令在映射之间进行转换

      例子:

      php bin/console doctrine:mapping:convert --filter User yml  /path_to_yml
      

      过滤器是可选的

      【讨论】:

      • 呃,你链接了它,但你读了吗?没有提到多对多的自引用关系......不幸的是!而且我无法转换映射,因为这只需要更多的工作来进行转换(告诉 Symfony 也加载 yaml 映射和注释......而且我不知道是否可以将两者混合...... o.O) ...
      • 自引用关系没有特殊的映射。您只需使用 manyToMany、targetEntity、joinTable 等组合。此外,转换背后的想法不是同时使用两者,而是以您在单独的演示项目中知道的格式编写映射,转换并在原始项目中使用它。
      • 我需要一个例子,你能提供一个吗?创建演示项目的工作量太大,ecc...我认为这是一个必须在线的示例...所以这是创建一个示例的正确问题...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多