为什么我必须运行" composer dump-autoload"命令使迁移工作在laravel?

时间:2015-11-28 17:02:11

标签: php laravel laravel-5

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

composer dump-autoload

只有这样才能按预期再次运作。我做错了会产生这个错误,或者这是迁移的正常行为吗?

以下是运行迁移过程时出现的错误:

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

4 个答案:

答案 0 :(得分:54)

好的,所以我想我知道你的问题。

基本上,由于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可以更快地加载网页。它不是默认值的唯一原因是因为生成需要更长的时间(但只是稍微有点明显)。

希望你可以设法对它进行排序,因为它非常烦人:(

答案 1 :(得分:2)

您应该运行:

composer dump-autoload

如果不起作用,您应该:

re-install composer

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

我的错误是在 config/fortify.php 中放置了一个函数,就我而言,它是一个匿名函数,导致了错误。

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

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

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

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