Bonjour à tous,

Dans un respository, j'ai une fonctionn countCabinets() qui me revoit simplement un nombre. Cette fonction sera appelé à de nombreux endroits dans une même page : dans le controller, dans certains services et même dans le menu.

Quelle est la meilleure pratique selon-vous dans ce cas, afin de ne pas répéter la requête dans une même page ? Créer dans le respository une variable statique stockant dans un tableau tous les résultats countCabinets() afin de le rappeler ensuite est-il une bonne pratique ?

<?php
class CabinetRepository extends EntityRepository
{

    protected static $count_cabinets;

    public function countCabinets()
    {
        if (isset(self::$count_cabinets)) {
            return self::$count_cabinets;
        }
        $rsm = new ResultSetMappingBuilder($this->_em);
        $rsm->addScalarResult('count_cabinets', 'count_cabinets', 'integer');
        $query = $this->_em->createNativeQuery('
            SELECT
                COUNT(c.id) AS count_cabinets
            FROM
                cabinet c
            WHERE
                c.date_suppression IS NULL
        ', $rsm);
        return self::$count_cabinets = $query->getSingleScalarResult();
    }

J'ai un doute sur la meilleure façon d'aborder ce problème ...

Merci d'avance :)

1 réponse


Salut,

Je pense qu'il serait préférable d'utiliser le système de cache fourni avec Doctrine et Symfony ;)
Un petit lien pour t'aider.

Aurélien