Skip to content

代码生成器实战

本文是代码生成器的实战教程。参数和配置的完整参考请查看 代码生成器文档

CLI 方式

基础用法

bash
cd server
php think make:crud

执行后进入交互式流程:

  1. 选择数据表 — 显示所有数据表,输入编号选择
  2. 确认字段 — 显示表字段列表,可排除不需要的字段
  3. 选择模块名 — 指定模块目录名(如 articleproduct
  4. 确认生成 — 预览生成文件列表,确认后执行

指定表名生成

bash
php think make:crud --table=announcements

跳过交互式选表,直接对指定表生成。

管理后台方式

在管理后台「开发工具 → 代码生成器」页面操作:

  1. 点击"导入表",选择目标数据表
  2. 点击"编辑",配置每个字段的表单类型、搜索条件、列表显示等
  3. 点击"预览",查看将要生成的代码
  4. 点击"生成",一键生成所有文件

生成后通常需要调整的地方

生成的代码是通用骨架,以下场景需要手动修改:

1. Repository — 自定义搜索条件

生成器默认为 varchar 字段生成模糊搜索,为 tinyint 生成精确匹配。如需更复杂的查询(日期范围、多表关联、排序规则),需手动修改 Repository 的 getSearchList 方法。

2. Service — 添加业务逻辑

生成的 Service 只有简单的 CRUD 转发。如需事务、事件触发、数据加工,在 Service 中补充:

php
public function create(array $data): array
{
    Db::startTrans();
    try {
        $result = $this->xxxRepository->create($data);
        // 添加业务逻辑...
        $this->trigger('xxx.created', $result);
        Db::commit();
        return $result;
    } catch (\Throwable $e) {
        Db::rollback();
        throw $e;
    }
}

3. Validate — 完善验证规则

生成器基于字段类型推断基础规则(require、max length),复杂规则(唯一性、条件验证、正则)需手动补充。

4. 前端 — UI 定制

生成的列表页和表单是标准布局。如需自定义列渲染(状态标签、图片预览)、富文本编辑器、级联选择器等,需在 Vue 组件中修改。

字段类型 → 表单组件映射

数据库类型生成的表单类型前端组件
varchar / charinputel-input
text / longtexttextareael-input type="textarea"
int / bigintnumberel-input-number
tinyintswitchel-switch
decimal / floatnumberel-input-number
date / datetimedateel-date-picker
enum / setselectel-select

进阶场景

关联表

如果表中有外键(如 category_id),生成器会生成基础的 el-input-number。你需要手动改为下拉选择:

  1. 在 API 文件中添加获取分类列表的接口
  2. 在表单组件中用 el-select 替换 el-input-number
  3. onMounted 中请求分类数据

树形结构

对于包含 pid 字段的自引用表(如分类表),生成器会生成普通列表。如需树形展示:

  1. Repository 中添加 getTree() 方法,使用递归或 order('pid') 构建树
  2. 前端使用 el-tablerow-key + tree-props 属性
  3. 表单中使用 el-tree-select 选择父级

基于 MIT 许可发布