我有一个使用doctrine从数据库中获取数据的脚本。有时它需要获取同一实体的数据,但第二次它使用身份映射,因此可能与数据库不同步(另一个进程可以修改数据库中的实体)。我们尝试的一个解决方案是在运行DQL查询之前设置查询提示Query::HINT_REFRESH
。但是,我们也希望将它用于简单的findBy(..)
调用,但这似乎不起作用?我们还希望能够在每个进程中全局设置它,以便在该上下文中运行的所有doctrine SELECT查询实际上将从DB中获取实体。我们尝试设置$em->getConfiguration()->setDefaultQueryHint(Query::HINT_REFRESH, true);
,但这似乎无法正常工作?
答案 0 :(得分:0)
Doctrine explicitly warns you它不应该在没有缓存的情况下使用。
然而,如果想忽略这一点,那么Cerad的评论(在in this answer中也提到)听起来是正确的。如果您想在每个查询中执行此操作,但您可能会考虑挂钩到doctrine event,遗憾的是preLoad
没有postLoad
的事件,只有clear
,但如果你真的没有&#39}。关心性能你可以创建一个postLoad监听器,它首先获取加载实体的类和id,在实体管理器上调用ALTER TABLE 0_value_addition_setup DROP INDEX value_code
,最后重新加载它。听起来对我来说非常不对,我洗了手: - )