Php 如何警告将要更新的多对多关系?

Php 如何警告将要更新的多对多关系?,php,symfony,events,doctrine,Php,Symfony,Events,Doctrine,我想在特定字段更新时进行特定处理 显而易见的方法是使用事件预更新,并查看哪些字段被更新。它很好用。。。除了多对多字段。它触发事件,但变更集为空 /** * @ORM\PreUpdate */ public function updateDate(PreUpdateEventArgs $event){ $changeSet = $event->getEntityChangeSet(); $res = ""; foreach($changeSet as $key =&

我想在特定字段更新时进行特定处理

显而易见的方法是使用事件预更新,并查看哪些字段被更新。它很好用。。。除了多对多字段。它触发事件,但变更集为空

/**
 * @ORM\PreUpdate
*/
public function updateDate(PreUpdateEventArgs $event){
    $changeSet = $event->getEntityChangeSet();
    $res = "";
    foreach($changeSet as $key => $change){
        $line = $key." : ".$event->getOldValue($key)." || ".$event->getNewValue($key);
        $res .= $line;
    }
}
在$res中,除多对多字段外,所有“我的”字段都被修改

此外,我尝试在侦听器中执行此操作,但我找不到如何提取从entityManager更新的字段

多谢各位

更多信息:

来自更新实体的关系:

/**
* @var Status
*
* @ORM\ManyToMany(targetEntity="User", inversedBy="projectsSupervisor", cascade={"persist"})
* @ORM\JoinTable(name="projects_supervisors")
*/
protected $supervisors;
另一方面:

/**
* @var Project
*
* @ORM\ManyToMany(targetEntity="Task", mappedBy="users")
*/
protected *tasks

Symfony版本:3.1.10

无法跟踪对多对多关联所做的更改。见:

仅对关联的反面所做的更改将被忽略。 确保更新双向关联的两侧(或在 从学说的角度来看,至少是拥有方)

此外,::getEntityChangeSet()仅对常规字段有用,而不是关联。对于一对多关联,可以使用
$unitOfWork->getScheduledCollectionUpdates()

可以在我的github存储库“”中查看一个实际示例,该存储库(第196行+)

foreach ($uow->getScheduledCollectionUpdates() as $collectionUpdate) {
    /** @var $collectionUpdate \Doctrine\ORM\PersistentCollection */
    if ($collectionUpdate->getOwner() === $entity) {
        // This entity has an association mapping which contains updates.
        $collectionMapping = $collectionUpdate->getMapping();
        print_r($collectionMapping); // Investigate this further
    }
}