web-dev-qa-db-fra.com

Comment limiter la taille du jeu de résultats dans doctrine 2?

Si j'utilise la méthode findBy de la classe de référentiel, comment puis-je limiter la taille de l'ensemble de résultats?

50
blacktie24

Dans Doctrine 2.1 EntityRepository # findBy () accepte désormais des paramètres supplémentaires pour le classement, la limite et le décalage.

voir la liste complète des nouvelles fonctionnalités dans doctrine 2.1 (404) Lien pertinent vers findBy et findOneBy

exemple:

 public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)

usage:

$product = $repository->findBy(
    array('name' => 'foo'),
    array('price' => 'ASC'),
    $myLimit,
    $myOffset
);
125

Pour Doctrine Query Language vous avez:

QueryBuilder::setMaxResults(integer $maxResults)
5
Jarzon

La méthode findBy () de la classe de référentiel générique ne prend pas en charge cela.

J'écrirais votre propre référentiel (comme décrit ici ) et remplacerais findBy () pour prendre des paramètres supplémentaires. Votre nouvelle implémentation peut utiliser le générateur de requêtes ou plain-old-DQL pour créer la requête appropriée. (J'utiliserais le constructeur de requêtes, car vous pouvez probablement simplement passer le paramètre $ critera directement dans QueryBuilder :: where () )

4
timdev