在我的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
和useResultCache
。我尝试使用false
代替null
,但也没有起作用。最后,我还尝试调用setResultCacheLifeSpan(0)
和setResultCacheLifeSpan(-1)
,但两个调用都没有任何区别。
有什么见解可以防止缓存,因为我想每次调用此方法时选择不同的随机行?
编辑:我还尝试调用clearResultCache()
,但这只会导致出现错误,指出:“未初始化结果缓存驱动程序”。
编辑2:根据要求,这是通过调用$query->getSqlQuery()
生成的SQL:
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
RANDOM()
可能每次都返回相同的结果。例如,如果将相同的种子提供给MySQL的RAND()
函数,它将每次返回相同的值。 - rojoca