Files
rxthinkcmf-wiki/RXThinkCMF_Laravel13_NaiveVue/zh/generator/cli.md
T
2026-10-08 17:50:29 +08:00

7.3 KiB
Raw Blame History

10.2 CLI 命令行使用

:::tip 概述 代码生成器提供 CLI 命令行方式,适合批量生成或 CI/CD 集成场景。CLI 底层复用 GeneratorLogic 与 GeneratorService——与 Web 端完全相同的能力,且不受权限与演示模式限制。 :::

命令格式

# =============================================================================
# 代码生成器 CLI 命令
# =============================================================================
# php artisan generate:code → Artisan 命令行调用代码生成器
# <表名>                    → 数据库表名(含或不含表前缀均可)
# |<注释>                   → 可选,用 | 分隔表注释(用于生成菜单标题)
# =============================================================================
php artisan generate:code <表名>[|注释]

参数说明

参数 必填 说明 示例
table(参数) 否 数据库表名,多表用逗号分隔(需配合 --batch) laravel_example 或 laravel_example|案例演示
--config / -c 否 指定已有的 JSON 配置文件路径,跳过表解析 --config config.json
--output / -o 否 将配置导出为 JSON 文件 --output config.json
--dry-run / -d 否 仅预览,不写入代码文件 --dry-run
--type / -t 否 模板类型:ui(默认)或 ui2(树形) --type ui2
--overwrite / -w 否 覆盖已存在的文件(高危,谨慎使用) --overwrite
--no-menu 否 不生成菜单 --no-menu
--batch / -b 否 批量模式,table 参数支持逗号分隔多表 --batch

(完整签名见 app/Console/Commands/GeneratorCommand.php。)

使用示例

# -----------------------------------------------------------------------------
# 列出所有可生成的数据库表
# -----------------------------------------------------------------------------
php artisan generate:code

# -----------------------------------------------------------------------------
# 预览生成代码(不写入文件,仅输出到终端)
# -----------------------------------------------------------------------------
php artisan generate:code laravel_example --dry-run

# -----------------------------------------------------------------------------
# 生成案例演示模块(带表注释,注释用于菜单标题)
# -----------------------------------------------------------------------------
php artisan generate:code "laravel_example|案例演示"

# -----------------------------------------------------------------------------
# 生成文章管理模块(覆盖已有文件)
# -----------------------------------------------------------------------------
php artisan generate:code "laravel_article|文章管理" --overwrite

# -----------------------------------------------------------------------------
# 生成部门管理模块(使用 ui2 树形模板)
# -----------------------------------------------------------------------------
php artisan generate:code "laravel_dept|部门管理" --type ui2

# -----------------------------------------------------------------------------
# 批量生成多张表
# -----------------------------------------------------------------------------
php artisan generate:code laravel_order,laravel_product,laravel_category --batch

# -----------------------------------------------------------------------------
# 导出配置为 JSON 文件
# -----------------------------------------------------------------------------
php artisan generate:code laravel_example --output config.json

# -----------------------------------------------------------------------------
# 从配置文件生成(跳过表解析)
# -----------------------------------------------------------------------------
php artisan generate:code --config config.json

:::tip Windows 下参数含中文或竖线 表名|注释 中的 | 在部分 shell 中是管道符,请用引号包裹整个参数:php artisan generate:code "laravel_example|案例演示"。 :::

生成的文件

执行命令后,自动生成以下文件:

app/Http/Controllers/Api/ExampleController.php   # 控制器(注解 + 快捷方法)
app/Services/ExampleService.php                  # 业务服务(属性配置 + 钩子骨架)
app/Models/Example.php                           # 数据模型(双 Trait + fillable)
app/Http/Requests/ExampleRequest.php             # FormRequest(字段验证规则)
ui/src/api/tool/example.ts                       # 前端 API 接口定义
ui/src/views/tool/example/index.vue              # 列表页(分页表格 + 搜索)
ui/src/views/tool/example/edit.vue               # 编辑弹窗(新增/编辑表单)
ui/src/views/tool/example/detail.vue             # 详情弹窗(只读展示)
ui/src/views/tool/example/columns.ts             # 表格列配置(仅 ui/ 模板)
ui/src/views/tool/example/querySchemas.ts        # 查询表单配置(仅 ui/ 模板)

同时自动完成:

  • routes/api.php 插入 CRUD 路由组(9 条标准路由)
  • laravel_menu 创建菜单与权限节点(挂载 GENERATOR_PARENT_MENU_ID 指定的父菜单下)
  • laravel_dict / laravel_dict_item 创建关联字典(幂等,不重复)

生成后操作

生成完成后,路由、菜单、字典均已自动创建。通常只需:

# -----------------------------------------------------------------------------
# 第 1 步:检查生成的文件是否正确
# -----------------------------------------------------------------------------
ls app/Http/Controllers/Api/Example*        # 控制器
ls app/Services/Example*                    # 业务服务
ls app/Models/Example*                      # 数据模型
ls app/Http/Requests/Example*               # FormRequest
ls ui/src/api/tool/example*                 # 前端 API
ls ui/src/views/tool/example/               # 前端页面

# -----------------------------------------------------------------------------
# 第 2 步:根据业务需求调整 Service 属性配置
# -----------------------------------------------------------------------------
# 可调整:pageLikeFields、pageEqFields、serializeMaps、uniqueFields 等

# -----------------------------------------------------------------------------
# 第 3 步:在菜单管理中调整菜单排序和图标
# -----------------------------------------------------------------------------

与 Web 界面对比

特性 CLI 命令 Web 界面
使用方式 命令行 浏览器
适用场景 批量生成、CI/CD、自动化 单表生成、可视化配置
预览功能 支持(--dry-run) 支持预览
批量生成 支持(--batch 原生支持) 支持(多选表)
树形结构 支持(--type ui2) 自动检测 parent_id 字段
覆盖文件 支持(--overwrite) 支持
跳过菜单 支持(--no-menu) 不支持
导出配置 支持(--output) 不支持
从配置生成 支持(--config) 不支持
权限限制 不受限制 受权限和演示模式限制

:::tip 推荐 日常开发推荐使用 Web 界面(可视化配置更方便),批量生成或自动化场景使用 CLI 命令。 :::