【问题标题】:Laravel 7 - artisan seed Target class [DatabaseSeeder] does not existLaravel 7 - 工匠种子目标类 [D​​atabaseSeeder] 不存在
【发布时间】:2020-10-29 20:41:28
【问题描述】:

我正在尝试播种我的“DatabaseSeeder.php”但是当我尝试运行时 php artisan db:seed 我得到了错误:

目标类 [D​​atabaseSeeder] 不存在。

我在“DatabaseSeeder.php”中的代码如下所示:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        factory(App\User::class, 3)->create()->each(function($u) {
            $u->questions()
              ->saveMany(
                  factory(App\Question::class, rand(1, 5))->make()
              );
        });        
    }
}

到目前为止我尝试了什么:

composer dump-autoload
php artisan cache:clear
php artisan optimize

注意:我没有用户自制的播种机,我正在尝试使用默认的播种机(DatabaseSeeder.php),但由于某种原因,它告诉我它不存在。

【问题讨论】:

  • 您是否对您的 composer.json 进行了任何自定义?具体到“自动加载”部分?
  • 添加命名空间数据库\种子;在顶部
  • @kurtFriars 不,我没有......“自动加载”部分如下所示:```“autoload”:{“psr-4”:{“Illuminate\\Container\\ ": "" } }, ``` 虽然我记得有一个 "classmap" 部分,但是当我运行 ``` php artisan cache:clear ``` 时它肯定被删除了
  • @Monika 没用
  • @JwedaAbdusalam 我的回答解决了你的问题吗?

标签: php laravel composer-php laravel-artisan laravel-7


【解决方案1】:

在 Laravel 7 中,composer.json 需要在自动加载映射中引用类映射,因为默认的种子文件夹不遵守 PSR-4:database/seeds(参见 Laravel Documentation - Database: Seeding

检查在 composer.json 中有这个:

"classmap": [
        "database/seeds",
        "database/factories"
    ],

然后运行composer dump-autoload

看到这个类似的错误:Target class [DatabaseSeeder] does not exist - Laravel 7 and Composer 2

【讨论】:

  • 或者直接运行 composer dumpautoload。它也会起作用
猜你喜欢
  • 1970-01-01
  • 2021-04-02
  • 2014-11-26
  • 2023-04-02
  • 2021-08-30
  • 2014-03-19
  • 2021-12-10
  • 2021-04-20
相关资源
最近更新 更多