类 'UserTableSeeder' 不存在 - Laravel 5.0 [php artisan db:seed]

2022-08-30 09:54:32

在迁移我的数据库后,我正在尝试一个基本的php工匠db:seed,但它不断返回cmd中的标题错误 - [ReflectionException] 类'UserTableSeeder'不存在

我尝试过的东西

  • 更改“DatabaseSeeder.php”文件中的“UserTableSeeder.php命名空间 Database\seeds;”和“use Database\seeds\UserTableSeeder;”的命名空间.php

以下是迁移

<?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->increments('id');
                $table->string('name');
                $table->string('email')->unique();
                $table->string('password', 60);
                $table->rememberToken();
                $table->timestamps();
            });
        }

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

下面是UserTableSeeder.php

<?php
use App\User;
use Illuminate\Database\Seeder;

class UserTableSeeder extends Seeder {

    public function run()
    {
        DB::table('users')->delete();

        User::create(['email' => 'foo@bar.com']);
    }
}

以下是数据库搜索器.php

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();

        $this->call('UserTableSeeder');
    }
}

答案 1

在数据库/文件夹中创建文件后运行。composer dumpautoload

为什么?

检查自动加载部分,您将看到该文件夹由“classmap”(源)加载:composer.jsondatabase/

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

Composer 文档将类映射描述为:

在安装/更新期间,类映射引用全部合并到单个键 = > 值数组中,该数组可以在生成的文件供应商/composer/autoload_classmap.php中找到。此映射是通过扫描给定目录/文件中所有.php和 .inc 文件中的类来构建的

您可以使用类映射生成支持为所有不遵循 PSR-0/4 的库定义自动加载。要对此进行配置,请指定要搜索类的所有目录或文件。

着重号是后加的。每次将文件添加到 时,都需要运行该命令来生成新的类映射,否则它不会自动加载。composer dumpautoloaddatabase/

相比之下,该文件夹使用 PSR-4 标准将完全限定的类名转换为文件系统路径。这就是为什么在那里添加文件后不需要的原因。app/dumpautoload


答案 2

有时代码是正确的,但您需要运行以下命令才能运行播种机命令。首先运行此命令

composer dumpautoload

然后播种播种机

php artisan db:seed --class=CreateUsersTable

我希望它会起作用


推荐