Laravel框架中artisan创建的模型注册在什么位置?
结论
Laravel 没有任何专门存储 artisan make:model 生成模型名称的注册表/配置文件,你直接改文件名后模型失效,完全是因为没有同步修改类名、自动加载映射和关联引用导致的,不需要删除重建,按以下步骤调整即可正常使用:
- 同步修改模型文件内的类名,保证类名和文件名完全匹配:Laravel 遵循 PSR-4 自动加载规范,比如将原
User.php重命名为Customer.php时,文件内的类声明必须从class User extends Model改为class Customer extends Model - 执行
composer dump-autoload命令刷新 Composer 的类自动加载映射,让自动加载逻辑能定位到新文件名对应的类 - 全局替换所有引用旧模型的位置:
- 控制器、中间件、命令、其他模型、策略类、观察者中通过
use引入的旧模型类路径,统一替换为新模型类 - 模型关联方法中写死的模型类引用,例如
hasMany(旧模型::class)、belongsTo(旧模型::class)这类声明,同步替换为新模型类 - 配置文件中写死的模型路径,比如
config/auth.php里的认证用户模型配置、相关扩展包的模型绑定配置,同步更新为新类路径 - 数据库填充、模型工厂、路由闭包/控制器方法中用到旧模型类名的位置全部同步调整
- 控制器、中间件、命令、其他模型、策略类、观察者中通过
你删除旧模型后重新执行artisan创建新模型能正常运行,本质是新建流程自动生成了匹配的文件名、类名,触发了自动加载刷新,和所谓的框架存储生成记录没有关系,按上述步骤调整完所有关联项,直接改名的效果和重新创建完全一致。
内容的提问来源于stack exchange,提问作者user9361135
相关产品推荐
相关产品推荐

