wake-up-neo.net

Warum muss ich den Befehl "composer dump-autoload" ausführen, damit Migrationen in laravel funktionieren?

Ich habe einige Migrationsklassen in meiner Anwendung erstellt, um die benötigten Tabellen zu erstellen, aber es werden immer wieder Fehler angezeigt. Ich muss diesen Befehl ausführen:

composer dump-autoload

Nur dann funktioniert es wieder wie erwartet. Mache ich etwas falsch, das diesen Fehler verursacht, oder ist dies ein normales Verhalten bei Migrationen?

Nachstehend ist der Fehler aufgeführt, den ich beim Ausführen des Migrationsprozesses erhalte:

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

OK, ich glaube, ich kenne das Problem, das Sie haben.

Grundsätzlich müssen Sie, weil Composer die von Ihnen erstellten Migrationsdateien nicht sehen kann, den Befehl dump-autoload ausführen, der nichts Neues herunterlädt, sondern nach allen Klassen sucht muss erneut einbezogen werden. Es wird lediglich die Liste aller Klassen neu erstellt, die in das Projekt einbezogen werden müssen (autoload_classmap.php). Aus diesem Grund funktioniert Ihre Migration, nachdem Sie diesen Befehl ausgeführt haben.

Behebung (möglicherweise) Sie müssen Ihrer composer.json-Datei einige zusätzliche Informationen hinzufügen.

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

Sie müssen den Pfad zu Ihrem Migrationsordner zum Classmap-Array hinzufügen. Führen Sie dann die folgenden drei Befehle aus ...

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

Dies löscht die aktuell kompilierten Dateien, aktualisiert die benötigten Klassen und schreibt sie dann zurück, damit Sie es nicht noch einmal tun müssen.

Im Idealfall führen Sie composer dump-autoload -o aus, um Ihre Webseiten schneller zu laden. Der einzige Grund, warum dies nicht der Standard ist, ist, dass die Generierung etwas länger dauert (aber nur geringfügig dauert) auffällig).

Hoffe, Sie können es schaffen, dies zu sortieren, da es in der Tat sehr ärgerlich ist :(

63
Duenna

Du solltest rennen:

composer dump-autoload

und wenn es nicht funktioniert solltest du:

re-install composer
2