目标 class [Database\Seeders\MockNotification] 在 Laravel 中不存在

Target class [Database\Seeders\MockNotification] does not exist in Laravel

我正在使用播种机 class 在数据库中播种 table

<?php
namespace Database\Seeders;
class MockNotification extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
        Notification::factory()->times(2)->create();
    }
}

我在 DatabaseSeeder

中调用这个 class

<?php
namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Database\Seeders\NotificationTypeSeeder;
use Database\Seeders\MockNotification;
class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // $this->call(UserSeeder::class);
        $this->call([NotificationTypeSeeder::class]);
        $this->call([MockNotification::class]);
    }
}

我收到这个错误

Target class [Database\Seeders\MockNotification] does not exist.

虽然我已经在 DatabaseSeeder 文件中导入了 MockNotification classs

你的问题很容易解决,你必须把你的 MockNotification class 放在 LARAVEL_ROOT_FOLDER/database/seeders 中,然后将它添加到你的 class namespace Database\Seeders;.

您的 DatabaseSeeder class 也应该有 namespace Database\Seeders;composer 需要它来执行 PSR-4 自动加载。

你的播种机应该是这样的:

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class MockNotification extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Notification::factory()->times(2)->create(); // Add this use on top
    }
}

添加

namespace Database\Seeders;

到两个文件。

它是标准的 PSR-4。

在种子文件的开头添加以下行

namespace Database\Seeders;

然后在终端执行以下

composer dumpautoload