目标类 [Modules\Orders\Database\Seeders\OrdersSeeder] 在 Laravel Seed 中不存在

问题描述 投票:0回答:1

我正在开发一个 Laravel 项目,在该项目中我创建了一个用于处理订单的自定义模块。我的播种机类 OrdersSeeder 位于

modules/Orders/database/seeders/OrdersSeeder.php
。这是我的播种者课程:

<?php

namespace Modules\Orders\Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;

class OrdersSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        //
    }
}

我在位于

DatabaseSeeder
database/seeders/DatabaseSeeder.php
班级中引用了该播种机,如下所示:

<?php

namespace Database\Seeders;

use App\Models\User;
use Modules\Orders\Database\Seeders\OrdersSeeder;
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     */
    public function run(): void
    {
        $this->call([
            OrdersSeeder::class
        ]);
    }
}

但是,当我运行 php artisan db:seed 时,遇到以下错误:

Illuminate\Contracts\Container\BindingResolutionException 

Target class [Modules\Orders\Database\Seeders\OrdersSeeder] does not exist.

我已经仔细检查了命名空间和文件路径,一切似乎都是正确的。可能是什么原因导致此问题?如何解决?

php laravel laravel-8 laravel-11
1个回答
0
投票

您的 Laravel 应用程序无法识别您的

modules
目录。如果您进入
composer.json
文件。你会看到类似这样的代码:

 "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        },
}

在这里您必须注册您的

modules
目录。即

 "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/",
            "Molules\\": "modules/",
        },
}

注意:我想你的

modules
目录名称是小写的。

进行这些更改后,运行以下命令:

 php artisan dump-autoload
© www.soinside.com 2019 - 2024. All rights reserved.