如何解决:Class 'AddSourceInClotureTable' not found in laravel 5.2

How to solve : Class 'AddSourceInClotureTable' not found in laravel 5.2

我在 PHP 5.6.16 服务器上使用 Laravel 5.2.45。

当使用 php artisan migrate:refresh / migrate:reset 命令时,出现此错误:

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

请注意,迁移和 migrate:rollback 正在运行。

我尝试了谷歌搜索(在 AddSourceInClotureTable 上没有一个结果),并尝试了 composer update、composer dumpauto、cache:clear 以及可能任何一个 artisan 可以执行的命令。

这是我在项目中的单个迁移文件:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCommandTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('commands', function (Blueprint $table) {
            $table->increments('id');
            $table->integer("provider");
            $table->string("number")->unique();;
            $table->date("delivered_at");
            $table->date("ordered_at");
            $table->integer("buyer");
            $table->boolean("deliver_mode");
            $table->integer("payment");
            $table->timestamps();
        });
        Schema::create('payment', function (Blueprint $table) {
            $table->increments('id');
            $table->string("name");
            $table->timestamps();
        });
        Schema::create('transports', function (Blueprint $table) {
            $table->increments('id');
            $table->string("name", 255)->unique();
            $table->string("code", 255)->unique();
            $table->integer("carrier");
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('commands');
        Schema::drop('payment');
        Schema::drop('transports');
    }
}

这是我的 composer.json

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*",
        "barryvdh/laravel-ide-helper": "^2.1",
        "laravelcollective/html": "5.2.*",
        "barryvdh/laravel-dompdf": "0.6.*",
        "caffeinated/flash": "~2.0"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "symfony/css-selector": "2.8.*|3.0.*",
        "symfony/dom-crawler": "2.8.*|3.0.*"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\Foundation\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\Foundation\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

有什么想法吗?

你应该总是 运行 composer dumpauto 或者在每次 migrate 命令执行后它的别名 composer dump-autoload 命令:

If you receive a "class not found" error when running migrations, try running the composer dump-autoload command and re-issuing the migrate command.

https://laravel.com/docs/5.2/migrations#running-migrations

此项目与上一个项目重复,迁移 table 未重命名。这里的人为错误。一旦给出新名称,所有错误都消失了。