Ich habe in meiner Anwendung einige Migrationsklassen erstellt, um die benötigten Tabellen zu erstellen, erhalte jedoch weiterhin Fehler. Ich muss diesen Befehl ausführen:
composer dump-autoload
Nur dann funktioniert es wieder wie erwartet. Mache ich etwas falsch, das diesen Fehler erzeugt, oder ist dies ein normales Verhalten bei Migrationen?
Unten ist der Fehler, den ich beim Ausführen des Migrationsprozesses erhalte:
[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'CreateVideoStatusTable' not found
Antworten:
OK, ich glaube, ich kenne das Problem, das Sie haben.
Da Composer die von Ihnen erstellten Migrationsdateien nicht sehen kann, müssen Sie den Befehl dump-autoload ausführen, der nichts Neues herunterlädt, sondern nach allen Klassen sucht, die erneut enthalten sein müssen. Es wird lediglich die Liste aller Klassen neu generiert, die in das Projekt aufgenommen werden müssen (autoload_classmap.php). Aus diesem Grund funktioniert Ihre Migration, nachdem Sie diesen Befehl ausgeführt haben.
So beheben Sie das Problem (möglicherweise) Sie müssen Ihrer Datei composer.json 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 ...
Dadurch werden die aktuell kompilierten Dateien gelöscht, die benötigten Klassen aktualisiert und anschließend wieder ausgeschrieben, sodass Sie sie nicht erneut ausführen müssen.
Idealerweise führen Sie diese aus
composer dump-autoload -o
, um das Laden Ihrer Webseiten zu beschleunigen. Der einzige Grund, warum dies nicht die Standardeinstellung ist, liegt darin, dass die Generierung etwas länger dauert (aber nur geringfügig auffällt).Ich hoffe, Sie können es schaffen, dies zu sortieren, da es in der Tat sehr ärgerlich ist :(
quelle
Du solltest rennen:
und wenn es nicht funktioniert sollten Sie:
quelle
Kurze Antwort: Klassenzuordnungen sind statisch, während das automatische Laden von PSR dynamisch ist.
Wenn Sie keine Klassenzuordnungen verwenden möchten, verwenden Sie stattdessen das automatische Laden von PSR.
quelle