【发布时间】:2017-07-16 06:47:05
【问题描述】:
所以我已经知道我可以在preUpdate 生命周期事件中获取对特定实体的更改:
/**
* Captures pre-update events.
* @param PreUpdateEventArgs $args
*/
public function preUpdate(PreUpdateEventArgs $args)
{
$entity = $args->getEntity();
if ($entity instanceof ParentEntity) {
$changes = $args->getEntityChangeSet();
}
}
但是,有没有办法同时获取任何关联实体的更改?例如,假设ParentEntity 的关系设置如下:
/**
* @ORM\OneToMany(targetEntity="ChildEntity", mappedBy="parentEntity", cascade={"persist", "remove"})
*/
private $childEntities;
而ChildEntity 也有:
/**
* @ORM\OneToMany(targetEntity="GrandChildEntity", mappedBy="childEntity", cascade={"persist", "remove"})
*/
private $grandChildEntities;
有没有办法在preUpdate 的ParentEntity 期间获得所有相关更改?
【问题讨论】:
-
关联实体本身在
preUpdate中会有自己的变化,除非实体本身保持不变。 -
@JasonRoman 我意识到,但是,我希望在
ParentEntity上完成所有工作,而不是从每个单独的preUpdate逐步构建,这将导致更多代码以及更多的边缘案例。 -
我发现了类似的东西stackoverflow.com/questions/11748790/…也许有帮助
标签: php symfony doctrine-orm associations