学说动态关系不起作用
Doctrine Dynamic Relationship does not work
我需要一种动态创建关系的方法,我选择加载 class 元数据时启动的学说事件,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"
]
);
}
好的,成功了,但问题是当学说将为这种关系设置数据时,他抛出了这个异常“通知:未定义的索引:newsNews”
我已经检查了 class 学说何时附加此数据并且反射属性中缺少 newsNews 字段。
我不知道我是否忘记了这个过程的某些部分 xD
感谢帮助
映射不应在运行时更改,您提出的解决方案更像是对 Doctrine 的 hack,虽然它可以工作,但它可能会导致您一路上遇到更多 hack。
如果你的限制是你不想修改Attachment
映射,你可以做一个一对多关联加入table.
这样只需要映射一对多的反面即可。但是,您只能那样导航。
我需要一种动态创建关系的方法,我选择加载 class 元数据时启动的学说事件,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"
]
);
}
好的,成功了,但问题是当学说将为这种关系设置数据时,他抛出了这个异常“通知:未定义的索引:newsNews” 我已经检查了 class 学说何时附加此数据并且反射属性中缺少 newsNews 字段。 我不知道我是否忘记了这个过程的某些部分 xD
感谢帮助
映射不应在运行时更改,您提出的解决方案更像是对 Doctrine 的 hack,虽然它可以工作,但它可能会导致您一路上遇到更多 hack。
如果你的限制是你不想修改Attachment
映射,你可以做一个一对多关联加入table.
这样只需要映射一对多的反面即可。但是,您只能那样导航。