IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Doctrine2 PHP Discussion :

Comment utiliser UseResultCache


Sujet :

Doctrine2 PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 155
    Par défaut Comment utiliser UseResultCache
    Bonjour,

    Je suis en train d'essayer le Result Cache de Doctrine. Voici mon bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function findAllQuery()
        {
            $query = $this->createQueryBuilder('q')
                        ->orderBy('q.id', 'asc')
                        ->getQuery();
     
            $query->useResultCache(true, 3600, 'allOffresList');
     
            return $query;
        }
    Sans le useResultCache, ça fonctionne très bien (mais sans le cache bien sûr).

    Par contre, avec la ligne useResultCache, j'ai un Twig_runtime_error :

    Item "id" for "Array" does not exist in MonBundle:Admin:listeOffres.html.twig at line 18
    Je vais voir à la ligne 18 du template et il n'y a absolument rien qui correspondent aux infos indiquées par l'exeption.

    Comment se sert-on du Result Cache dans ce cas. D'après ce que j'avais pu lire à droite et à gauche, ça ne me semblait pas sorcier. Mais je sèche. Et d'ailleurs, est-il également possible de mettre en cache les résultats des requêtes effectuée pour les champs de type 'entity' dans un formulaire. Si oui comment, car je ne crois pas qu'on puisse utiliser useResultCache dans la propriété 'query_builder' du champ.

    Pour info voici mon fichier de config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    orm:
            auto_generate_proxy_classes: %kernel.debug%
            #auto_mapping: true
            default_entity_manager: default
            entity_managers:
              default:
                metadata_cache_driver:  apc
                result_cache_driver:    apc
                query_cache_driver:     apc
                connection:             default
                mappings:
                  MonBundle:  ~
                  FOSUserBundle: ~

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 155
    Par défaut
    Apparemment si je remplace par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query->useResultCache(true);
    La page fonctionne, en tout cas il n'y a plus l'exception indiquée ci-dessus.

    Par contre, la page s'affiche correctement la première fois qu'on y accède. Si je tente d'y revenir par la suite, le résultat de la requête ne s'affiche plus. Ce qui est étrange, c'est que le résultat de la requete est affiché dans un pager et que le pager affiche bien la pagination avec les différentes page ...

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Comment utiliser un cache ?
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 14/03/2003, 09h55
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 09/02/2003, 23h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 09h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo