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

新手上路,请多包涵

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

composer dump-autoload

只有这样它才能按预期再次工作。我是否做错了什么会产生此错误,或者这是迁移的正常行为?

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

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

原文由 Hasan Al-Natour 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 886
2 个回答

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

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

希望你能设法得到这个排序,因为它确实很烦人:(

原文由 Duenna 发布,翻译遵循 CC BY-SA 4.0 许可协议

我的错误是在 config/fortify.php 中放置了一个函数,在我的情况下,它是一个给出错误的匿名函数。

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

在许多地方,他们说从 bootstrap/cache/* 中删除文件,但在我的情况下它不起作用,而且它真的没有意义。无论如何,我给你留下命令:

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

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

原文由 fafaaf 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题