【发布时间】: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