我想在我的学说模型中添加一个安全层。为了能够在 SQL 级别的学说过滤器中添加权限检查,我必须维护一些数据库表,其中包含为每个实体计算的访问控制令牌的缓存。
现在我必须更新这些表,在某些情况下我必须完全重建这些缓存表之一。这必须在侦听 onFlush 事件的事件侦听器中完成。存档此文件的最佳(最高效和最可靠)方式是什么?
它记录了如何持久化新实体以及如何更改已持久化实体的关联和原始属性。这是通过调用工作单元对象的 computeChangeSet() 或 recomputeSingleEntityChangeSet() 并将每个单个实体传递给这些方法之一来完成的。在这些更新期间必须锁定整个系统,尽管它们很少见,但应尽快完成。此外,我不知道如何删除实体甚至截断整个表,而不必先读出所有实体。
- 如何删除 onFlush 事件中的实体?
- 如何在 onFlush 事件中进行大规模更新(表截断和插入数十万条记录)?我想我可以在这种情况下使用 $EntityManager->getConnection()->executeUpdate() ,对吗?
- 如何在 onFlush 事件中锁定表(读取)?