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

Laravel执行make:model -mcs时相关文件的生成逻辑与来源

命令执行生成流程

执行php artisan make:model 'FileName' -mcs时,文件生成按固定逻辑推进:

  • 首先做参数校验解析:校验传入的FileName是否符合PHP类名规范,同时解析短选项标记:
    • -m 等价于--migration,标记需生成对应数据库迁移文件
    • -c 等价于--controller,标记需生成对应模型的控制器
    • -s 等价于--seeder,标记需生成对应模型的数据填充文件
      make:model命令本身默认就会生成模型文件,不需要额外加参数标记。
  • 优先生成核心模型文件:在app/Models/目录下创建FileName.php,默认写入继承Eloquent基类的基础模型结构,自动根据模型名推导对应的数据表名。
  • 按选项标记依次生成关联文件:
    1. 处理-m参数:在database/migrations/目录下生成带时间戳前缀的迁移文件,命名格式为[YYYY_MM_DD_HHMMSS]_create_[模型对应表名复数]_table.php,文件内预置自增ID、时间戳字段的基础表创建骨架。
    2. 处理-c参数:在app/Http/Controllers/目录下生成FileNameController.php,未额外加--resource参数时生成空控制器,加了该参数会预置资源路由对应的7个标准方法空骨架。
    3. 处理-s参数:在database/seeders/目录下生成FileNameSeeder.php,写入继承Seeder基类的基础填充类结构。
  • 所有文件生成前会先校验目标路径是否存在同名文件,存在则直接抛出错误终止执行,不会覆盖原有文件;只有追加--force参数时才会强制覆盖已有文件。所有操作完成后,命令行会逐行输出每个文件的生成路径与成功状态。
  • 如果需要生成模型工厂,要追加-f/--factory参数,本次执行的-mcs参数组合不会生成工厂文件。
生成依赖的源模板存放位置

Laravel的make系列命令生成文件依赖的模板叫stub存根文件,存放位置分两种场景:

  • 默认未自定义模板的场景:所有官方预置的模板存放在框架核心源码的vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/目录下,本次命令涉及的对应模板分别为:
    • 普通模型模板:model.stub
    • 建表迁移模板:migration.create.stub
    • 普通空控制器模板:controller.plain.stub,API场景空控制器用controller.api.stub,带资源方法的控制器用controller.model.stub
    • 数据填充模板:seeder.stub
      生成文件时,框架会自动替换stub文件内的{{ class }}、{{ namespace }}、{{ table }}这类占位符,替换为实际的类名、命名空间、表名等动态内容后,再写入项目对应目录。
  • 自定义模板的场景:如果项目中执行过php artisan stub:publish命令,所有stub文件会被发布到项目根目录的stubs/目录下,后续执行make系列命令时,会优先读取该目录下的自定义模板,不再读取vendor目录下的官方默认模板,你可以直接修改这个目录下的stub文件,定制符合项目规范的生成文件结构。

内容的提问来源于stack exchange,提问作者Shourov Shahadat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:54:08