在Symfony中防止Doctrine的查询缓存

Mat*_*ins 8 caching doctrine symfony1 symfony-1.4 doctrine-1.2

在我的Symfony/Doctrine应用程序中,我有一个按RANDOM()命令的查询.我多次调用相同的方法,但看起来查询的结果正在被缓存.

这是我的相关代码:

$query = $table->createQuery('p')
    ->select('p.*, RANDOM() as rnd')
    ->orderBy('rnd')
    ->limit(1)
    ->useQueryCache(null)
    ->useResultCache(null);
$result = $query->fetchOne();
Run Code Online (Sandbox Code Playgroud)

不幸的是,相同的记录返回每一次,不管我的传球nulluseQueryCacheuseResultCache.我尝试使用false而不是null,但这也不起作用.最后,我还打过电话既setResultCacheLifeSpan(0)setResultCacheLifeSpan(-1),但也调用了一定的作用.

有关如何防止缓存的任何见解,因为每次调用此方法时我都希望选择不同的随机行?

编辑:我也试过调用clearResultCache(),但刚刚结束导致错误说明:"结果缓存驱动程序未初始化".

编辑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
Run Code Online (Sandbox Code Playgroud)

Mat*_*ins 5

原来我是个白痴。我试图简化我对这个问题的查询,但这样做并没有抓住真正的原因。我有一个where()andandWhere()调用,条件组合导致只有一个可能的记录被匹配。感谢大家抽出时间来回复,抱歉浪费了大家的时间!