Laravel 迁移:类“未找到”

2022-08-30 08:42:49

我正在将一个Laravel准系统项目部署到Microsoft Azure,但是每当我尝试执行时,我都会收到错误:php artisan migrate

[2015-06-13 14:34:05] 生产。错误: 异常 'Symfony\Component\Debug\Exception\FatalErrorException' 在 D:\home\site\vendor\laravel\framework\src\Illuminate\Database\Migrations\Migrator 中显示消息 'Class '' not found.php:328

堆栈跟踪:

 #0 {main}  

可能是什么问题?谢谢

-- 编辑 --

迁移类

<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function(Blueprint $table)
        {
            $table->bigIncrements('id');
            $table->string('name', 50);
            $table->string('surname', 50);
            $table->bigInteger('telephone');
            $table->string('email', 50)->unique();
            $table->string('username', 50)->unique();
            $table->string('password', 50);
            $table->boolean('active')->default(FALSE);
            $table->string('email_confirmation_code', 6);
            $table->enum('notify', ['y', 'n'])->default('y');
            $table->rememberToken();
            $table->timestamps();
            
            $table->index('username');
        });
    }

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

答案 1

对于 PSR-4 自动加载程序用户 (composer.json):

将迁移文件夹保留在阵列内,不要将其包含在 head 下的 psr-4 对象中。作为迁移的主类,Migrator 不支持命名空间。例如;classmapautoload

"autoload": {
    "classmap": [
        "app/database/migrations"
    ],
    "psr-4": {
        "Acme\\controllers\\": "app/controllers"
    }
}

然后运行:

php artisan clear-compiled 
php artisan optimize:clear
composer dump-autoload
php artisan optimize
  • 第一个清除所有已编译的自动加载文件。
  • 秒清除 Laravel 缓存(可选)
  • Third 为命名空间类构建自动加载程序。
  • Fourth 优化了 Laravel 应用的各个部分,并为非命名空间类构建了自动加载程序。

从这个时候开始,在病房中,您将不必再次执行此操作,任何新的迁移都将正常工作。


答案 2

只需确保迁移文件名与类名相同即可。

即:

如果文件名为:

xxx_151955_create_post_translations_table.php

那么类应该是:

CreatePostTranslationsTable


如果您使用的是Laravel 9,则不需要这样的问题,因为迁移类是这样表示的:

return new class extends Migration


推荐