Post

Symfony – Rechercher plusieurs enregistrements

Symfony – Rechercher plusieurs enregistrements

Cours 13 — Rechercher plusieurs enregistrements

Introduction

Les méthodes findAll() et findBy() permettent de récupérer plusieurs enregistrements.

Elles sont fournies par le repository de l’entité.


Rechercher tous les enregistrements

1
$patients = $patientRepository->findAll();

Résultat :

1
Retourne tous les patients.

Utiliser findAll() dans un contrôleur

1
2
3
4
5
6
7
8
9
10
11
#[Route('/patients', name: 'patient_liste')]
public function index(
    PatientRepository $patientRepository
): Response
{
    $patients = $patientRepository->findAll();

    return $this->render('patient/index.html.twig', [
        'patients' => $patients
    ]);
}

Afficher les résultats dans Twig

1
2
3
{% for patient in patients %}
    {{ patient.nom }}
{% endfor %}

Rechercher avec une condition

1
2
3
$patients = $patientRepository->findBy([
    'nom' => 'Durand'
]);

Résultat :

1
Retourne tous les patients dont le nom est Durand.

Plusieurs critères

1
2
3
4
$patients = $patientRepository->findBy([
    'nom' => 'Durand',
    'prenom' => 'Paul'
]);

Résultat :

1
Retourne les patients correspondant aux deux critères.

Comprendre le résultat

1
$patients = $patientRepository->findAll();

Retourne :

1
Une collection d'objets Patient.

Contrairement à :

1
$patient = $patientRepository->find($id);

qui retourne :

1
Un seul objet Patient.

Conclusion

Pour rechercher plusieurs enregistrements :

1
2
findAll()
findBy()

À retenir :

  • findAll() retourne tous les enregistrements ;
  • findBy() applique un ou plusieurs critères ;
  • le résultat est une collection d’objets ;
  • Twig utilise généralement une boucle for pour afficher les résultats.
This post is licensed under CC BY 4.0 by the author.