You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9迁移文件类名未从Stub模板正常生成

问题

我运行下面的Laravel命令创建模型和对应的迁移文件:

php artisan make:model Candidate -m

命令输出显示创建成功:

Model created successfully.
Created Migration: 2022_08_06_165641_create_candidates_table

但生成的迁移文件里,类名还是{{ class }}占位符,没有替换成正确的类名(比如CreateCandidatesTable)。我已经试过删除vendor目录、重新安装Composer依赖、清除配置缓存,问题依然存在。

解决办法
  • 检查自定义迁移模板
    如果项目根目录下存在resources/stubs文件夹,里面可能有自定义的migration.create.stub迁移模板文件。打开该文件确认类名行是否为class {{ class }} extends Migration——若模板变量被硬编码或写错,会导致替换失败。没有自定义模板的话,去vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs路径检查官方模板是否正常。

  • 彻底清除所有缓存
    执行以下命令清除Laravel各类缓存:

    php artisan cache:clear
    php artisan config:clear
    php artisan route:clear
    php artisan view:clear
    php artisan optimize:clear
    
  • 重新生成自动加载文件
    运行Composer命令刷新自动加载规则:

    composer dump-autoload -o
    
  • 发布框架Stub文件
    若官方模板文件损坏,发布最新的框架Stub文件到项目中:

    php artisan stub:publish
    

    发布完成后再尝试创建模型,观察占位符是否能正常替换。

  • 临时切换环境到Local
    如果.env文件中APP_ENV设置为production,临时改为local后再执行模型创建命令——生产环境的缓存机制可能会干扰模板变量替换。

  • 手动修复迁移文件(临时方案)
    若上述方法均无效,可先手动将迁移文件里的{{ class }}替换为正确的类名(比如对应文件名的大驼峰格式:2022_08_06_165641_create_candidates_table.php对应的类名是CreateCandidatesTable),再排查是否有自定义Artisan命令或Service Provider干扰了默认生成逻辑。

内容的提问来源于stack exchange,提问作者Prabesh Guragain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:45:35