在我的 Symfony/Doctrine 应用程序中,我有一个按 RANDOM() 排序的查询。我多次调用相同的方法,但看起来查询的结果正在被缓存。
这是我的相关代码:
$query = $table->createQuery('p')
->select('p.*, RANDOM() as rnd')
->orderBy('rnd')
->limit(1)
->useQueryCache(null)
->useResultCache(null);
$result = $query->fetchOne();
不幸的是,无论我是否通过,每次都会返回相同的记录null
二者皆是useQueryCache
and useResultCache
。我尝试使用false
代替null
,但这也不起作用。最后,我也尝试致电setResultCacheLifeSpan(0)
and setResultCacheLifeSpan(-1)
,但这两个电话都没有什么作用。
由于我希望每次调用此方法时都选择不同的随机行,因此对如何防止缓存有何见解?
Edit:我也尝试过打电话clearResultCache()
,但这最终导致了一个错误:“结果缓存驱动程序未初始化”。
Edit 2:根据要求,这是通过调用生成的 SQL$query->getSqlQuery()
:
SELECT c.id AS c__id, c.name AS c__name, c.image_url AS c__image_url,
c.level AS c__level, c.created_at AS c__created_at, c.updated_at
AS c__updated_at, RANDOM() AS c__0 FROM cards c ORDER BY c__0 LIMIT 1