1-й параметр executeCacheQuery хочет получить оператор и строку?

С помощью

doctrine/common                 v2.9.0
doctrine/dbal                   v2.8.0

Это оскорбительная часть кода:

$qb = $db->createQueryBuilder()
->select(...)
->from(...)
->leftJoin(...)
->where(...)
->orderBy(...)
->setMaxResults(1)
->setParameter('forum_id', ANNOUNCEMENT_FORUM_ID ?? 3);

$query = $db->executeCacheQuery($qb->execute(), $qb->getParameters(), $qb->getParameterTypes(), new \Doctrine\DBAL\Cache\QueryCacheProfile(60, 'announcement', null));

$announcement = $query->fetch();

dump($announcement);

Я не уверен, что именно передать в качестве первого параметра для $db->executeCacheQuery()потому что если я положу $qb->execute() там, как он хочет, чтобы я передал заявление, я получаю эту ошибку:

Recoverable fatal error: Object of class PDOStatement could not be converted to string in ...../vendor/doctrine/dbal/lib/Doctrine/DBAL/Cache/QueryCacheProfile.php on line 102

Что это за часть внутри QueryCacheProfile учебный класс:

введите описание изображения здесь

Когда я использую $qb->getSQL() вместо этого, который является строкой, я получаю эту ошибку:

Fatal error: Uncaught TypeError: Argument 1 passed to Doctrine\DBAL\Cache\ResultCacheStatement::__construct() must be an instance of Doctrine\DBAL\Driver\Statement, instance of PDOStatement given, called in ....

Вот пример документа, которому я следовал: https://www.doctrine-project.org/projects/doctrine-dbal/en/2.8/reference/caching.html#caching

Как мне удается кэшировать этот запрос?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]