2015-08-17 2 views
0

Существует множество документации относительно использования кеша результата в Доктрине. Однако я не смог найти отдельную документацию о том, как обновлять/вставлять кеш во время сохранения объекта в доктрине. В настоящее время для обновления я использую.Обновление/Вставка записей кэша во время сохранения объекта доктрины

$entityManager = $this->getEntityManager(); 
$cacheDriver = $entityManager->getConfiguration()->getResultCacheImpl(); 

$cacheDriver->delete($key); 

$searchEntity->setUpdatedAt(new \DateTime()) 
      ->setData([]); 

$entityManager->persist($searchEntity); 
$entityManager->flush(); 

и вставить что-то вроде

$searchEntity = new Entity; 
$entityManager->persist($searchEntity); 
$entityManager->flush(); 

Однако в обоих случаях я хотел бы, чтобы обновить/вставить кэш. Есть ли способ достичь этого легко и просто, без ручного создания/обновления записей кэша.

ответ

0

Создал social network с использованием Symfony Standard Edition, который включает в себя Доктрину. Я столкнулся с этой проблемой, когда мне показалось, что это была пустая трата времени для удаления кеша и запроса БД после вставки/обновления, но данные для вставки/обновления легко доступны.

Я полностью согласен с тем, что для этого нет четкой документации. В течение многих недель исследований нет выбора, кроме как вручную создавать кеш при вставке БД, это массив массивов i.e многомерного массива. Я должен был запросить БД и создать запись в кеше, присвоить ей значение, передать его в twig и выполнить дамп var в моей среде dev, чтобы посмотреть, как он выглядит и имитировать его структуру при успешной вставке (вы можете создать прослушиватель для это). Поскольку моя социальная сеть связана со скидками, каждый раз, когда мне нравится, я обновляю кеш, просматривая этот массив для соответствующего идентификационного ключа, а затем обновляю его общее количество просмотров, добавляя (или вычитая 1), то же самое относится к общим комментариям и общим ресурсам и т. Д. Я успешно проверил это, когда я начал использовать Apc-кеш, затем Memcached, и теперь мой текущий кеш redis и его работа продолжается.

Пожалуйста, обратитесь к моему старшему question для примера кода

Смежные вопросы