Я работаю над проектом symfony 2.5 с доктриной 2.4.Как кэшировать доктрину «findOneBy()» с ключом кеша и временем ожидания кеша в Symfony 2.4?
Я хочу кэшировать результат запроса с идентификатором кэша и временем кеша, поэтому я могу удалить результат кэша, когда это необходимо, хотя администратор.
Я могу кэшировать результат запроса с помощью опции «createQueryBuilder()».
Пример:
$this->createQueryBuilder('some_table')
->select('some_table')
->where('some_table.deleted_date IS NULL')
->getQuery()
->useResultCache(true)
->setResultCacheLifetime(120) //Query Cache lifetime
->setResultCacheId($queryCacheId) //Query Cache Id
->getResult();
Но я не могу найти подобный способ chache результат запроса для ") findOneBy (" вариант.
Пример:
$this->findOneBy(array('some_field'=>$some_value));
Я ищу какой-то правильное решение, любая помощь очень ценится.
https://groups.google.com/d/msg/doctrine-user/RIeH8ZkKyEY/HnR7h2p0lCQJ Как говорит Ocramius, вы nedd переопределить этот метод в репо, если вы хотите воспользоваться преимуществами кэширования операций. – DonCallisto
Спасибо за ваш ответ. Позвольте мне попробовать и спросим вас, если потребуется. –
Это, как я переопределить функцию "findOneBy" в классе хранилища общественная функция findOneBy (массив $ criteria_array) { \t \t $ запрос = $ this-> createQueryBuilder ('б') -> выберите ('б'); \t \t Еогеасп ($ criteria_array, как $ FIELDNAME => $ критериев) { \t \t \t $ query-> andWhere ("Ь $ FIELDNAME =:. $ FIELDNAME"); \t \t \t $ query-> setParameter ("$ fieldName", $ criteria); \t \t} \t \t возвращение $ query-> GetQuery() \t \t \t -> useResultCache (истина) \t \t \t -> setResultCacheLifetime (120) \t \t \t -> setResultCacheId ($ queryCacheId) \t \t \t -> GetResult(); } Проверьте и исправьте меня. Нужно ли переопределять функцию «Найти *» во всем репозитории всякий раз, когда мне нужно кэшировать результат? –