Comment générer automatiquement un Repository de doctrine d’une entité dans Symfony 5

Symfony 5 utilise Doctrine ORM, ce qui rend les choses vraiment faciles pour démarrer avec votre nouveau projet basé sur symfony. Personnellement, j’aime mettre à niveau d’anciens projets qui utilisent des bases de données MySQL, car il est assez facile de faire de l’ingénierie inverse et de créer les entités à partir d’un schéma de base de données déjà existant.

Les référentiels de doctrine sont censés fonctionner comme un moyen de récupérer des entités pour ainsi dire, vous pouvez étendre les référentiels avec n’importe quelle méthode dont vous avez besoin pour obtenir des données personnalisées, par exemple getUsersWithIntelProcessors ou quelque chose comme ça. Dans cet article, nous allons vous expliquer comment générer facilement un Repository pour une entité dans Symfony 5.

Génération automatique de la classe Repository

Si vous souhaitez le faire automatiquement avec une commande, Symfony vous offre également un moyen simple de le faire. Comme tout d’abord, veillez à bien préciser sur l’annotation de votre entité, le nom de votre nouvelle classe de référentiel, par exemple :

/**
 * monEntity
 *
 * @ORM\Table(name="mon_entity")
 * @ORM\Entity(repositoryClass="App\Repository\MonEntityRepository")
 */

Comme vous pouvez le voir, dans le commentaire @ORM\Entity(), vous pouvez spécifier la propriété repositoryClass avec l’espace de noms de la classe de référentiel qui sera créée. Par exemple, avec toute la classe d’entité, cela devrait ressembler à ceci :

<?php

// /src/Entity/MonEntity.php
namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * MonEntity
 *
 * @ORM\Table(name="mon_entity")
 * @ORM\Entity(repositoryClass="App\Repository\MonEntityRepository")
 */
class MonEntity
{
    // .. 

    // Tes propriétés et méthodes

    // ..
}

Une fois que vous avez vérifié cela, exécutez la commande suivante dans votre projet symfony :

php bin/console make:entity --regenerate App

La console devrait générer une sortie similaire à ceci :

created: src/Repository/MyEntityRepository.php
 no change: src/Entity/OtherEntitiesYouMayHave.php

  Success! 
           

Done.

Il précisera quels fichiers ont été créés ou modifiés, dans le cas de la création d’une classe d’entité personnalisée, vous devriez voir une seule ligne créée dans notre exemple.