В моем приложении 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)
, но ни один из них не имел значения.
Любое понимание того, как предотвратить кэширование, так как я хочу, чтобы каждый раз при вызове этой функции выбиралась другая случайная строкаmethod?
Редактировать: Я также попытался вызвать 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