Laravel数据库播种报错:Target class [Database\Seeders\PermissionTableSeeder]不存在
问题排查与解决方案
核心问题:类名与调用名称不匹配
你在DatabaseSeeder.php中调用的是PermissionTableSeeder::class,但实际对应的类名是PermissionsTableSeeder(文件名也是PermissionsTableSeeder.php),两者差了一个字母s,这是导致Laravel无法找到目标类的直接原因。
解决方案步骤
修正调用的类名
修改DatabaseSeeder.php中的调用代码,将PermissionTableSeeder::class改为PermissionsTableSeeder::class:<?php namespace Database\Seeders; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { public function run() { $this->call([ PermissionsTableSeeder::class, RolesTableSeeder::class, PermissionRoleTableSeeder::class, UsersTableSeeder::class, RoleUsersTableSeeder::class, ]); } }更新Composer自动加载映射
执行命令确保自动加载文件同步更新:composer dump-autoload额外检查:模型引入缺失
在PermissionsTableSeeder.php中,直接使用Permissions::insert()但未引入对应模型类,需添加use语句(路径根据你的实际模型位置调整):<?php namespace Database\Seeders; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use App\Models\Permissions; // 添加模型引入 class PermissionsTableSeeder extends Seeder { public function run() { $permissions = [ ['id' => 1, 'title' => 'user_access'], ['id' => 2, 'title' => 'task_access'], ]; Permissions::insert($permissions); } }重新执行播种命令
运行以下命令完成数据库播种:php artisan db:seed
内容的提问来源于stack exchange,提问作者Gizmo Hey
相关产品推荐
相关产品推荐

