Почему я должен запускать команду "composer dump-автозапуск", чтобы заставить миграции работать в laravel?


Я создал несколько классов миграции в своем приложении для создания нужных мне таблиц, но я продолжаю получать ошибки. Мне нужно выполнить эту команду:

composer dump-autoload

Только тогда он снова работает, как и ожидалось. Я делаю что-то не так, что порождает эту ошибку, или это нормальное поведение при миграции?

Ниже приведена ошибка, которую я получаю при запуске процесса миграции:

  [Symfony\Component\Debug\Exception\FatalErrorException]  
  Class 'CreateVideoStatusTable' not found  
Author: rrrafalsz, 2015-11-28

2 answers

Хорошо, я думаю, что знаю, в чем ваша проблема.

В принципе, поскольку Composer не может видеть файлы миграции, которые вы создаете, вам нужно выполнить команду dump-autoload, которая не загружает ничего нового, но ищет все классы, которые ей нужно включить снова. Он просто восстанавливает список всех классов, которые необходимо включить в проект(autoload_classmap.php), и именно поэтому ваша миграция работает после выполнения этой команды.

Как это исправить (возможно) Вам нужно добавить некоторую дополнительную информацию в свой файл composer.json.

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

Вам нужно добавить путь к папке миграции в массив classmap. Затем выполните следующие три команды...

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

Это очистит текущие скомпилированные файлы, обновит необходимые классы, а затем запишет их обратно, чтобы вам не пришлось делать это снова.

В идеале вы выполняете composer dump-autoload-o для более быстрой загрузки ваших веб-страниц. Единственная причина, по которой это не по умолчанию, заключается в том, что потому что для генерации требуется немного больше времени (но это лишь слегка заметно).

Надеюсь, вам удастся разобраться с этим, так как это действительно очень раздражает:(

 36
Author: Duenna, 2017-12-13 09:18:38

Вы должны запустить:

composer dump-autoload

И если не работает, вы должны:

re-install composer
 1
Author: afshindadashnezhad, 2018-09-13 00:18:57