我有一个与Application
实体具有ManyToMany关系的SortList
实体。拥有方是Application
。有一个简单的连接表,可以为这种关系创建映射。
以下是Application
实体在管理集合方面的外观:
/**
* Add sortLists
*
* @param \AppBundle\Entity\SortList $sortList
* @return Application
*/
public function addSortList(SortList $sortList)
{
$this->sortLists[] = $sortList;
$sortList->addApplication($this);
return $this;
}
/**
* Remove sortLists
*
* @param \AppBundle\Entity\SortList $sortList
*/
public function removeSortList(SortList $sortList)
{
$this->sortLists->removeElement($sortList);
$sortList->removeApplication($this);
}
/**
* Get sortLists
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getSortLists()
{
return $this->sortLists;
}
我想跟踪SortLists
中添加或删除Application
的时间。
我已经了解到我无法使用postUpdate
生命周期事件来跟踪这些更改集合。
相反,我似乎应该使用onFlush,然后使用$unitOfWork->getScheduledCollectionUpdates()
和$unitOfWork->getScheduledCollectionDeletions()
。
对于更新,我看到我可以使用“内部”方法getInsertDiff
来查看集合中的哪些项目已添加,getDeleteDiff
可以查看集合中的哪些项目已被删除。
但我有几个问题:
$unitOfWork->getScheduledCollectionDeletions()
没有此信息。答案 0 :(得分:0)
我认为以下示例涵盖了您需要的所有内容,因此您只需在应用中实现您想要/需要的内容。
persist
操作,您可以使用prePersist and
postPersist event listener on an entity或prePersist and
postPersist event subscriber on an entity示例。 PrePersist
不会给你ID,因为它不存在于DB中
PostPersist将如示例所示。remove
操作,您可以使用preRemove and
postRemove event listener on an entity示例。update
操作非常棘手,您可以使用
preUpdate event listener on an entity示例,但请注意
怎么做。inserting
,updating
和removing
操作,您可以使用
onFlush event listener on an entity涵盖的例子
UnitOfWork getScheduledEntityInsertions
,
getScheduledEntityUpdates
和getScheduledEntityDeletions
方法。 that website中还有许多其他有用的侦听器示例,因此只需使用listener
关键字的搜索功能即可。一旦我为M-N协会做了同样的事情,但找不到例子。如果我可以发布它但不确定我是否可以!