【问题标题】:Doctrine Dynamic Relationship does not work教义动态关系不起作用
【发布时间】:2016-02-28 18:50:12
【问题描述】:

我需要一种动态创建关系的方法,我选择加载类元数据时启动的学说事件 loadClassMetadata()

    public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
{
    $metadata = $eventArgs->getClassMetadata();

    $this->em = $eventArgs->getEntityManager();
    if ($metadata->getName() != 'AppBundle\Entity\NewsNews') {
        return;
    }
    $attachmentsMetadata = $this->getAttachmentsClassMetadata();

    $attachmentsMetadata->mapManyToOne(
        [
            "targetEntity" => $metadata->getName(),
            "fieldName"    => "newsNews",
            'joinColumns' => array(
                array(
                    'name' => 'foreign_key',
                    'referencedColumnName' => 'id'
                )
            ),
            "inversedBy" => "attachments"
        ]
    );
    $attachmentsMetadata->initializeReflection();

    $metadata->mapOneToMany(
        [
            "targetEntity" => $attachmentsMetadata->getName(),
            "fieldName"    => "attachments",
            'joinColumns' => array(
                array(
                    'name' => 'id',
                    'referencedColumnName' => 'foreign_key'
                )
            ),
            "mappedBy" => "newsNews"
        ]
    );
}

好的,工作了,但问题是当学说为这种关系设置数据时,他会抛出这个异常“Notice: Undefined index: newsNews” 当学说将附加此数据并且反射属性中缺少 newsNews 字段时,我已经检查了该类。 我不知道我是否忘记了这个过程的某些部分xD

感谢您的帮助

【问题讨论】:

  • 我不完全确定你为什么需要这个以及这种“动态”代码的目的是什么?
  • 我想自动创建自己的应用程序关系,而无需更改捆绑包。谢谢

标签: php symfony orm doctrine-orm doctrine


【解决方案1】:

映射并不意味着在运行时更改,您提出的解决方案更像是对 Doctrine 的破解,虽然它可以工作,但它可能会导致您在此过程中遇到更多破解。

如果您的限制是您不想修改Attachment 映射,您可以与联接表进行一对多关联

这样,您只需要映射一对多的反面。但是,您只能以这种方式导航。

文档:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-unidirectional-with-join-table

【讨论】:

    猜你喜欢
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    相关资源
    最近更新 更多