假设我有两个过程:
因此,过程1需要查询第二个过程更改的条目。 但是,无论设置什么缓存选项,我都会从存储库中获取过时的对象。教义不会刷新其已在缓存中拥有的实体。
在查询使之起作用之前立即使用$entityManager->clear()
,但是这给我带来了一种不好的感觉,因为这似乎不是应该使用的学说。
由于我是该理论的新手,因此请考虑一些显而易见的答案。
如何获取有关使用数据库中的新属性刷新缓存对象的学说?
创建EntityManager
:
$config = Setup::createAnnotationMetadataConfiguration(
'/path/to/my/models',
true,
null,
null,
false
);
$entityManager= EntityManager::create(
$dbConfig,
$config
);
存储库功能:
(扩展EnitityRepository
的存储库类的成员)
public function findThisAndThat(): array
{
$qb = $this->_em->createQueryBuilder();
$qb->select('t')
->from('Corp\MyProject\Models\Task', 't')
->orderBy('t.priority', 'DESC');
return $qb->getQuery()
->getResult();
}
查找对象
$taskRepository = $this->entityManager->getRepository(Task::class);
$tasks = $taskRepository->findThisAndThat();
我尝试使用以下内容:
$config->setSecondLevelCacheEnabled(false);
$query->setCacheMode(Cache::MODE_REFRESH)
$query->useResultCache(false)
$query->setCacheable(false)