93 votes

Comment utiliser une méthode findBy avec des critères comparatifs ?

J'aurais besoin d'utiliser une méthode findBy "magic finder" utilisant des critères comparatifs (et pas seulement des critères exacts). En d'autres termes, j'ai besoin de faire quelque chose comme ceci :

$result = $purchases_repository->findBy(array("prize" => ">200"));

pour que j'obtienne tous les achats dont le prix est supérieur à 200.

2voto

Gander Points 166

J'aime utiliser de telles méthodes statiques :

$result = $purchases_repository->matching(
    Criteria::create()->where(
        Criteria::expr()->gt('prize', 200)
    )
);

Bien sûr, vous pouvez pousser la logique lorsqu'il s'agit d'une seule condition, mais lorsque vous avez plusieurs conditions, il est préférable de la diviser en fragments, de la configurer et de la transmettre à la méthode :

$expr = Criteria::expr();

$criteria = Criteria::create();
$criteria->where($expr->gt('prize', 200));
$criteria->orderBy(['prize' => Criteria::DESC]);

$result = $purchases_repository->matching($criteria);

0voto

James Harrys Points 61

Copier la requête findBy et la modifier pour qu'elle renvoie le résultat attendu est une bonne approche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X