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


Why do I have to run "composer dump-autoload" command to make migrations work in laravel?

我已经在应用程序中构建了一些迁移类来创建我需要的表,但我总是出错。我需要运行这个命令:

composer dump-autoload

只有到那时,它才能像预期的那样再次发挥作用。我是做错了什么导致了这个错误,还是这是迁移的正常行为?

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

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

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

基本上,因为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,以便更快地加载网页。它不是默认的唯一原因是它需要更长的时间来生成(但只是稍微值得注意)。

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

您应该运行:

composer dump-autoload

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

简单回答:类映射是静态的,而PSR自动加载是动态的。

如果不想使用类映射,请改用PSR自动加载。

我的错误是在config/freinforce.php中放置了一个函数,在我的情况下,是一个匿名函数导致了错误。

对此的最终解决方案是查看我通常在config/文件夹中修改的文件。

在许多地方,他们说从bootstrap/cache/*中删除文件,但在我的情况下,这并不起作用,也没有真正的意义。在任何情况下,我留给你的命令:

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

但我真的建议您仔细查看您配置的基本laravel配置文件。在这里你会发现错误