确定原则 2 实体中的更改字段
在原则 2 中,管理实体字段的更改对于确保数据完整性至关重要。为了解决这个问题,开发人员经常需要确定实体中的哪些字段已被修改。虽然可以选择手动实现,但探索 Doctrine 的内置功能可以简化此过程。
使用 EntityManager 检索更改的字段
Doctrine 提供了 EntityManager,可通过 $em 访问,它提供了一种检索更改字段的有效方法。通过使用 getUnitOfWork 方法,您可以访问 DoctrineORMUnitOfWork,在下面的代码片段中指定为 $uow。
$entity = $em->find('My\Entity', 1); $uow = $em->getUnitOfWork();
更改集的计算和检索
到计算更改集(代表已更改的字段)会触发 $uow 上的computeChangeSets 方法。如果您位于侦听器内,则此计算是可选的。随后,使用 getEntityChangeSet($entity) 检索特定于您的实体的更改集:
$uow->computeChangeSets(); $changeset = $uow->getEntityChangeSet($entity);
通过利用 getEntityChangeSet 方法,您可以访问包含键值对的数组,其中键代表更改的字段名称,values 代表修改后的值。
关键注意事项
使用此方法时在 preUpdate 侦听器中,避免重新计算更改集,因为 Doctrine 已经执行了此任务。相反,只需执行 getEntityChangeSet 即可获取更新的字段。
注意事项
应避免在 Doctrine 事件监听器之外使用此解决方案,因为它可能会破坏 Doctrine 的常规行为。因此,这种方法最适合事件侦听器中的特定场景。
以上是如何有效地确定 Dotrine 2 实体中的哪些字段已被修改?的详细内容。更多信息请关注PHP中文网其他相关文章!