Метод useResultCache
Метод useResultCache класса Query включает или выключает
кэширование результата запроса. Первым параметром передаётся
флаг включения кэша, вторым - время жизни кэша в секундах,
третьим - идентификатор кэша. Метод возвращает сам объект
Query, что позволяет строить цепочки вызовов.
Синтаксис
$query->useResultCache(bool $cache, ?int $lifetime = null, ?string $id = null)
Пример
Давайте включим кэширование результата запроса на 3600 секунд:
<?php
namespace App\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class ArticleController extends AbstractController
{
public function index(EntityManagerInterface $em): Response
{
$query = $em->createQuery('SELECT a FROM App\Entity\Article a');
$query->useResultCache(true, 3600, 'articles_list');
$res = $query->getResult();
return new Response(count($res));
}
}
?>
Результат выполнения кода:
3
Пример
Давайте отключим кэширование результата запроса:
<?php
namespace App\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class ArticleController extends AbstractController
{
public function index(EntityManagerInterface $em): Response
{
$query = $em->createQuery('SELECT a FROM App\Entity\Article a');
$query->useResultCache(false);
$res = $query->getResult();
return new Response(count($res));
}
}
?>
Результат выполнения кода:
3
Смотрите также
-
класс
Query,
который представляет запрос Doctrine -
метод
getResult,
который возвращает результат запроса -
метод
setMaxResults,
который ограничивает число возвращаемых строк -
метод
setHint,
который задаёт подсказку для запроса