Sto lavorando al progetto symfony 2.5 con doctrine 2.4.Come memorizzare nella cache la query "findOneBy()" con l'id della cache e l'opzione cache lifetime in Symfony 2.4?
Desidero memorizzare nella cache il risultato della query con l'id della cache e il tempo di cache, in modo da poter eliminare il risultato della cache, ogni volta che è necessario tramite admin.
Sono in grado di memorizzare nella cache il risultato della query con l'opzione "createQueryBuilder()".
Esempio:
$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();
Ma io non sono in grado di trovare il modo simile a Chache risultato della query per l'opzione "findOneBy()".
Esempio:
$this->findOneBy(array('some_field'=>$some_value));
Sto cercando una soluzione adeguata, ogni aiuto è molto apprezzato.
https://groups.google.com/d/msg/doctrine-user/RIeH8ZkKyEY/HnR7h2p0lCQJ Come dice Ocramius, si Nedd eseguire l'override di questo metodo in pronti contro termine, se si vuole approfittare delle operazioni di caching. – DonCallisto
Grazie per la risposta. Fammi provare e ti chiederemo di più se necessario. –
Questo è il modo in sovrascrivo funzione "findOneBy" in classe repository funzione pubblica findOneBy (array $ criteria_array) { \t \t $ query = $ this-> createQueryBuilder ('b') -> selezionare ('b'); \t \t foreach ($ criteria_array come $ criteri fieldName => $) { \t \t \t $ query-> andwhere ("b $ fieldName =:. $ FieldName"); \t \t \t $ query-> setParameter ("$ fieldName", $ criteri); \t \t} \t \t ritorno $ query-> getQuery() \t \t \t -> useResultCache (vero) \t \t \t -> setResultCacheLifetime (120) \t \t \t -> setResultCacheId ($ queryCacheId) \t \t \t -> getResult(); } Si prega di rivedere e correggere me. Devo sovrascrivere la funzione "trova *" in tutti i repository ogni volta che ho bisogno di memorizzare i risultati nella cache? –