Использование
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);
Я не уверен, что именно передать в качестве 1-го параметра для $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 / ru / 2.8 / reference / caching.html # caching
Как мне удается кэшировать этот запрос?