阅读条款文档的THIS部分,其中指出 DQL 更新语句不会触发 preUpdate 或 postUpdate 事件我总是很困惑。
我将Doctrine 实施到我自己的应用程序中...所以没有 Symfony 或者任何东西,一切都很有效 - 我很自豪我做到了这一点。 但是.....
无论是否使用,我如何才能获取所有预或发布 更新和刷新事件自定义 DQL 或其中一个预定义 findOneBy()等方法????
现在我只需要它们进行测试和实现缓存系统,因为我现在没有任何复杂的实体关联,这需要进一步的持久性管理。
类似
<!--code start -->
// $key = $_SERVER['REQUEST_URI.'_'.$entity
onPostUpdateEvent($memcached->delete($key));
if($memcached->get($key)){
return $memcached->get($key);
}
$result = $em->getRepository($entity);
$memcached->set($key,$result,$lifetime);
return $result;
实际上我想设置一个自定义事件类来处理所有事件或者是否更好地使用@preFoo等实体内的函数的注释?
所有案例都有最佳做法吗?
编辑:
将尝试使用$ query-&gt; resultCache();
例如:
$query = $em->createQuery('bla di bla');
// doNotCache isset via EventListener listening to postUpdate
// in AbstractController initialize() Method
if($this->doNotCache){
$query->useResultCache(false);
}else{
$query->useResultCache(true, 3600, 'my_custom_id');
}
$result = $query->getArrayResult();
非常感谢