Laravel8 php artisan auth修改模型路径报User类未找到如何解决
报错原因
这个错误和路由缓存没有关系,是Laravel认证系统默认读取配置里指定的用户模型类路径,你手动迁移User模型目录后,没有同步修改认证配置,框架还在按默认的App\Models\User路径找类,自然会抛出类不存在的错误。
修复步骤
按以下顺序修改即可:
- 修改认证全局配置
打开项目下的config/auth.php文件,定位到providers配置段,将用户提供者对应的model值替换为你迁移后的模型类名:
'providers' => [ 'users' => [ 'driver' => 'eloquent', // 原默认值是 App\Models\User::class,替换为新路径 'model' => App\Users\User::class, ], ],
- 核对模型文件的命名空间
打开迁移后的app/Users/User.php文件,确认文件顶部的命名空间和所在目录匹配,否则自动加载会找不到类:
<?php namespace App\Users; // 原命名空间是App\Models,必须同步修改 use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; // 其余原有引用、类内部代码不需要改动 class User extends Authenticatable { use Notifiable; // ... 原有模型代码 }
- 清理旧的配置缓存
如果你的项目开启过配置缓存,修改完配置后需要在项目根目录执行命令清除旧缓存:
php artisan config:clear
需要重新生成配置缓存的话再执行php artisan config:cache即可。
- 全局检查硬编码引用
全局搜索项目代码里所有写死App\Models\User的位置,包括控制器、策略、事件监听器、数据库填充文件、队列任务等,把对应的use引用统一替换为App\Users\User,避免其他功能调用时报同类错误。
额外说明
执行php artisan route:clear之类的路由刷新操作对这个问题无效,路由缓存只负责存储路由和处理逻辑的映射关系,不涉及认证系统的模型加载配置。
内容的提问来源于stack exchange,提问作者Weronika Piotrowicz
相关产品推荐
相关产品推荐

