为什么我必须运行“composer dump-autoload”命令才能使迁移在laravel中工作?

2022-08-30 07:22:18

我已经在我的应用程序中构建了一些迁移类来创建我需要的表,但我不断收到错误。我需要运行以下命令:

composer dump-autoload

只有这样,它才能按预期再次工作。我是否执行了导致此错误的错误操作,或者这是迁移的正常行为?

以下是我在运行迁移过程时遇到的错误:

  [Symfony\Component\Debug\Exception\FatalErrorException]  
  Class 'CreateVideoStatusTable' not found  

答案 1

好吧,我想我知道你遇到的问题。

基本上,由于 Composer 看不到您正在创建的迁移文件,因此您必须运行 dump-autoload 命令,该命令不会下载任何新内容,但会查找需要再次包含的所有类。它只是重新生成需要包含在项目中的所有类的列表(autoload_classmap.php),这就是运行该命令后迁移正常工作的原因。

如何修复它(可能)您需要向composer.json文件添加一些额外的信息。

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

您需要将迁移文件夹的路径添加到类映射数组中。然后运行以下三个命令...

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

这将清除当前编译的文件,更新所需的类,然后将它们写回,这样您就不必再这样做了。

理想情况下,您可以执行 ,以便更快地加载网页。它不是默认值的唯一原因是因为它需要更长的时间来生成(但只是稍微值得注意)。composer dump-autoload -o

希望你能设法解决这个问题,因为它非常烦人,:(


答案 2

您应该运行:

composer dump-autoload

如果不起作用,您应该重新安装作曲家


推荐