web-dev-qa-db-fra.com

Pourquoi dois-je exécuter la commande "composer dump-autoload" pour que les migrations fonctionnent avec laravel?

J'ai construit des classes de migration dans mon application pour créer les tables dont j'ai besoin, mais je continue à avoir des erreurs. J'ai besoin d'exécuter cette commande:

composer dump-autoload

Ce n’est qu’alors que cela fonctionne à nouveau comme prévu. Est-ce que je fais quelque chose de mal qui génère cette erreur ou est-ce un comportement normal avec les migrations?

Ci-dessous, l'erreur que je reçois lors de l'exécution du processus de migration:

  [Symfony\Component\Debug\Exception\FatalErrorException]  
  Class 'CreateVideoStatusTable' not found  
48
Hasan Al-Natour

OK, alors je pense connaître le problème que vous rencontrez.

Fondamentalement, parce que Composer ne peut pas voir les fichiers de migration que vous créez, vous devez exécuter la commande dump-autoload qui ne télécharge rien de nouveau, mais recherche toutes les classes à inclure. encore. Il régénère simplement la liste de toutes les classes devant être incluses dans le projet (autoload_classmap.php). C'est pourquoi votre migration fonctionne après l'exécution de cette commande.

Comment résoudre ce problème (éventuellement) Vous devez ajouter des informations supplémentaires à votre fichier composer.json.

"autoload": {
    "classmap": [
        "PATH TO YOUR MIGRATIONS FOLDER"
    ],
}

Vous devez ajouter le chemin d'accès à votre dossier de migration au tableau classmap. Puis lancez les trois commandes suivantes ...

php artisan clear-compiled 
composer dump-autoload
php artisan optimize

Cela effacera les fichiers compilés actuels, mettra à jour les classes dont il a besoin, puis les réécrira afin que vous n'ayez pas à le refaire.

Idéalement, vous exécutez composer dump-autoload -o, pour un chargement plus rapide de vos pages Web. La seule raison pour laquelle ce n'est pas par défaut, c'est parce que cela prend un peu plus de temps à générer (mais n'est que légèrement perceptible).

J'espère que vous parviendrez à résoudre ce problème, car il est très agaçant :(

63
Duenna

Vous devriez courir:

composer dump-autoload

et si cela ne fonctionne pas, vous devriez:

re-install composer
2
afshindadashnezhad