web-dev-qa-db-fra.com

Symfony 4 et Doctrine, comment générer automatiquement un référentiel après le mappage?

Tous les tutoriels que je trouve ont un référentiel créé automatiquement avec make:entity lors de la création de nouvelles tables

mais j'ai importé à partir d'une base de données existante en suivant le documentation avec la commande suivante: php bin/console doctrine:mapping:import App\\Entity annotation --path=src/Entity

Cette commande ne semble créer aucun référentiel ... et la documentation ne parle pas de la génération d'un référentiel

Je sais que je peux en créer un manuellement, mais existe-t-il une commande pour les générer automatiquement? J'ai 25 tables .... Serait très utile

paresseux moi oO

edit: j'ai aussi essayé php bin\console make:entity --regenerate mais je reçois no change sur toutes les tables et aucun référentiel créé

11
Sam

SOLUTION 1

Vous pouvez simplement courir

php bin\console make:entity --regenerate

Cela incitera et demandera:

Enter a class or namespace to regenerate [App\Entity]:

Appuyez simplement sur Entrée ou spécifiez l'emplacement de votre dossier d'entité, et cela créera les référentiels getters/setters manquants.

test

---> AVERTISSEMENT:
Si les référentiels ne sont pas créés, assurez-vous que vous avez les annotations suivantes dans vos entités:

/**
 * @ORM\Entity(repositoryClass="App\Repository\MyClassRepository")
 */
class MyClass
{

}

SOLUTION 2

SymfonyMakerBundle vous permet de créer vos propres décideurs. Vous pouvez donc en créer un nouveau appelé make:repositories qui générera un référentiel pour chaque entité trouvée dans le dossier/Entity.

Pour ce faire, créez une classe (MakeRepositories) qui étend AbstractMaker dans votre src/Maker/ répertoire. (documentation: https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html#creating-your-own-makers )

Utilisez le fabricant de base make:entity pour vous aider à créer votre nouvelle commande (car elle contient le code pour générer un référentiel): https://github.com/symfony/maker-bundle/blob/master/src/Maker/MakeEntity.php

22
Elbarto

Ne copiez pas l'annotation trop rapidement, j'ai copié l'annotation, mais dans mon cas, les entités ont été générées automatiquement. Il existait donc déjà une ligne ORM\Repository apparaissant après, supprimez-la ou remplacez-la par la solution.

0
Yvon Huynh