Lire des données de la BD
Comment récupérer des données de la base de données avec le Repository
Notions théoriques
Dans Symfony avec Doctrine, un repository est une classe contenant des méthodes pour récupérer des entités de la base de données.
Symfony crée automatiquement un repository pour chaque entité, que vous pouvez étendre pour ajouter vos propres méthodes de récupération.
Les principales méthodes pour récupérer des entités sont :
find
,findOneBy
,findBy
,- et
findAll
.
Vous pouvez créer des méthodes personnalisées dans le repository pour des requêtes plus spécifiques.
Exemple de mise en application
Voici un exemple d'utilisation du repository dans Symfony 7 pour récupérer tous les joueurs :
use App\Entity\Player;
use App\Repository\PlayerRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class GameController extends AbstractController
{
#[Route('/game', name: 'game')]
public function index(PlayerRepository $playerRepository): Response
{
$players = $playerRepository->findAll();
return $this->render('game/index.html.twig', [
'players' => $players,
]);
}
}
Etudions ce code
public function index(PlayerRepository $playerRepository): Response
Symfony 7 utilise l'injection de dépendances pour injecter directement le repository dans la méthode du contrôleur.
$players = $playerRepository->findAll();
Cette ligne récupère tous les enregistrements de la table liée à l'entité Player
.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Votre défi pour aujourd'hui consiste à afficher tous les joueurs
Ajoutons une action à notre GameController
pour afficher tous les joueurs dans Symfony 7.
Ensuite créez une action index
qui récupère tous les joueurs de la base de données et les passe à la vue.
Une solution
Vous devez être connecté pour voir le contenu.