Comment utiliser une méthode findBy avec les critères comparatifs
J'avais besoin d'utiliser un "magic finder" findBy méthode utilisant les critères comparatifs (non seulement des critères précis). En d'autres termes, j'ai besoin de faire quelque chose comme ceci:
$result = $purchases_repository->findBy(array("prize" => ">200"));
de sorte que j'avais l'occasion de tous les achats dont le prix est au-dessus de 200.
- pourquoi Symfony ici? c'est à partir de la Doctrine\ORM paquet.... Je ne peux que recommander à tout le monde de comprendre avant de parler ^^
- Si vous pensez que la doctrine ou symfony n'est pas votre truc, vous avez juste pris un mauvais cadre de votre projet. Ces cadres fonctionnent grand pour de nombreux projets.
- pourquoi a-t-elle de l'être cryptique
Vous devez vous connecter pour publier un commentaire.
C'est un exemple d'utilisation de la Expr() De La Classe - j'avais besoin de cela aussi il y a quelques jours et il m'a fallu un certain temps pour savoir quelle est la syntaxe exacte et le mode d'utilisation:
La classe
Doctrine\ORM\objet entityrepository
implémenteDoctrine\Common\Collections\Sélectionnable
API.La
Selectable
interface est très souple et tout à fait nouveau, mais il vous permettra de gérer des comparaisons et des critères plus complexes facilement sur les deux référentiels et unique des collections d'articles, peu importe si dans l'ORM ou l'ODM ou tout à fait distincte des problèmes.Ce serait un des critères de comparaison que vous avez demandé que dans la Doctrine ORM
2.3.2
:L'avantage majeur de cette API, c'est que vous êtes en œuvre une sorte de modèle de stratégie ici, et il fonctionne avec des dépôts, des collections, des paresseux, des collections et partout le
Selectable
API est mis en œuvre.Cela vous permet de vous débarrasser de dizaines de méthodes spéciales que vous avez écrit pour vos dépôts (comme
findOneBySomethingWithParticularRule
), et, au lieu de se concentrer sur l'écriture de vos propres critères de classes, chacune représentant l'un de ces filtres.$criteria::expr()->gt()
idéalement, non?Criteria::expr()
aussi OK - sentez-vous libre pour modifier la réponse.$result
dans un template twig etUnrecognized field: 0
pointant vers la ligne{% for r in result %}
.Vous devez utiliser DQL ou la QueryBuilder. E. g. lors de votre Achat-Objet entityrepository vous pourriez faire quelque chose comme ceci:
Même pour des scénarios plus complexes de prendre un coup d'oeil à la Expr() de la classe.
La documentation Symfony maintenant explicitement montre comment faire:
De http://symfony.com/doc/2.8/book/doctrine.html#querying-for-objects-with-dql