Une requête sur mesure

Exercice 3 sur 6 du chapitre 2 · 150 XP · 5 objectifs vérifiés par des tests

Notions abordées : QueryBuilderDQLParamètres

Les aventuriers fauchés se plaignent : impossible de savoir ce qu'on peut s'offrir avec six pièces d'or. Et Gorm aimerait que le « plat du jour » soit la spécialité la moins chère, pour attirer le chaland.

findBy() ne suffit plus : il faut écrire ses propres requêtes. Le service Cuisine, le contrôleur et le template sont prêts. Ils appellent trois méthodes du PlatRepository… qui renvoient pour l'instant des listes vides.

Votre mission

Dans PlatRepository, écrivez avec le QueryBuilder :

  1. findParPrixCroissant() : tous les plats, du moins cher au plus cher ;
  2. findSpecialites() : seulement les spécialités, de la moins chère à la plus chère ;
  3. findPourUnBudget(float $budget) : les plats dont le prix ne dépasse pas le budget, du moins cher au plus cher.

Essayez /menu, puis /menu?budget=6 dans l'aperçu.

Rappel

Le QueryBuilder produit du DQL : on y parle d'entités et de propriétés (p.prix), pas de tables ni de colonnes. Et une valeur venant de l'extérieur passe toujours par un paramètre (:budget), jamais par une concaténation.