Symfony – DoctrineFixturesBundle installé … doctrine:fixtures:load non trouvé ?

Pour ceux qui connaissent Symfony et les fixtures doctrine. Je voulais vous partager cette astuce.

Je suis tombé sur cette erreur :

There are no commands defined in the "doctrine:fixtures" namespace.

en voulant charger les fixtures , c-à-d en lançant cette commande

php bin/console doctrine:fixtures:load -n

-n : signifie ne pas me demander confirmation.

Cela a bien marché depuis 🙁

DoctrineFixturesBundle est bien installé. Pour m’en assurer, je fais exprès de l’installer à nouveau

composer require  doctrine/doctrine-fixtures-bundle --dev

Alors, que s’est-il passé ?

En fait, dans mon fichier .env.local, j’avais changé d’environnement en mettant :

APP_ENV=prod

Au lieu de

APP_ENV=dev

Ce qui fait que lorsque je veux lancer une commande, il ne va tenir compte que des commandes dans l’environnement avec lequel je veux le lancer (ici prod). Et comme doctrine-fixtures-bundle est lancé en mode dev. Cela ne marche pas.

Solutions

1/ Modifier la valeur de APP_ENV=dev dans le fichier .env.local puis relancer à nouveau la commande.

Cependant, cette solution est moyennement acceptable. Dans la mesure où il faut à chaque fois modifier ce fichier avant chaque commande.

2/ Ajouter la variable d’environnement à utiliser avant d’appeler la commande sans modifier le fichier .env.local.

La commande devient alors :

APP_ENV=dev php bin/console doctrine:fixtures:load -n

C’est plus propre ainsi 🙂