企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] 代码自动生成功能的url为`/admin/generate/index`,可以一键生成后台控制器,后台视图,接口控制器,接口service,模型,验证器。自动建表功能已经删除,建议使用ThinkPHP的数据库迁移功能建表或自行在数据库中建表。 ## 完整操作步骤 例如,生成一个后台 **用户管理** 功能 ### 建表 #### 创建表迁移文件 运行以下命令,该命令会在`/database/migrations/`目录下生成对应的迁移文件。 ``` php think migrate:create User ``` #### 添加表字段 迁移文件默认带一个`change`方法,在`change`方法中可以进行表字段的添加,示例代码如下。 ~~~php public function change() { $table = $this->table('user', ['comment' => '用户', 'engine' => 'InnoDB', 'encoding' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci']); $table ->addColumn('avatar', 'string', ['limit' => 255, 'default' => '/static/index/images/avatar.png', 'comment' => '头像']) ->addColumn('username', 'string', ['limit' => 30, 'default' => '', 'comment' => '用户名']) ->addColumn('nickname', 'string', ['limit' => 30, 'default' => '', 'comment' => '昵称']) ->addColumn('mobile', 'string', ['limit' => 11, 'default' => '', 'comment' => '手机号']) ->addColumn('password', 'string', ['limit' => 255, 'default' => password_hash('_password', 1), 'comment' => '密码']) ->addColumn('status', 'boolean', ['limit' => 1, 'default' => 1, 'comment' => '是否启用']) ->addColumn('create_time', 'integer', ['limit' => 10, 'default' => 0, 'comment' => '创建时间']) ->addColumn('update_time', 'integer', ['limit' => 10, 'default' => 0, 'comment' => '更新时间']) ->addColumn('delete_time', 'integer', ['limit' => 10, 'default' => 0, 'comment' => '删除时间']) ->create(); $this->insertData(); } ~~~ 在创建表的过程中应注意以下事项: - 表名必须使用`小写+下划线`的形式,表备注必须为该表中文名称,例如`user`表的备注为`用户`,切勿添加后缀。 - 字段名必须使用`小写+下划线`的形式,字段注释应该为该字段的中文名称,例如`username`字段的注释为`用户名`,切勿添加后缀。 - 无特殊情况表的主键必须为`id`字段,且为无符号自增,可根据需要设置为`int`或`bigint`。 - 无特殊情况必须添加`create_time,update_time,delete_time`三个字段,默认值都为`0`,基础模型中软删除默认值已经设置为`0`,无须进行调整。 - 关联的外键必须要遵守`关联表`+`_id`的形式命名,例如文章表的`user_id`关联用户表(user),订单表的`goods_id`关联商品表(goods)。 #### 运行迁移命令生成表 创建表的代码写完之后,可以运行以下命令进行表的创建: ``` php think migrate:run ``` > 以上三步可以省略,直接运行`mysql`语句创建或在数据库工具中进行表的创建。 ### 代码生成 当表创建好之后,就可以访问`/admin/generate/index`,点击第一个**代码自动生成**进入到代码自动生成生成页面。 代码自动生成界面如下: ![代码自动生成](https://img.kancloud.cn/9d/24/9d24566e8affbfeaa0548b0245a4acf7_3310x1444.png) #### 选择表 选择需要生成代码的表,例如`user`表,选择之后界面如下: #### 自动生成设置 * **中文名**为菜单,控制器,模型,验证器的中文名称,此名称默认取表名的注释。 * **模块名称后缀**默认为管理,比如生成菜单后主菜单(/admin/user/index)就叫用户管理。 * **模块图标**默认为列表样式,在左侧菜单图标中使用。 * **自动生成类名**主要为控制器,模型,验证器的类名,默认为表名转大写驼峰。 * **列表删除**为`index`视图中的删除功能,不需要取消勾选即可,默认选中。 * **列表添加**为`index`视图中的添加功能,不需要取消勾选即可,默认选中。 * **列表刷新**为`index`视图中的刷新功能,不需要取消勾选即可,默认选中。 * **列表导出**为`index`视图中的导出功能,不需要取消勾选即可,默认选中。 * **列表导入**为`index`视图中的导入功能,不需要取消勾选即可,默认选中。 * **列表启用/禁用**为`index`视图中的启用/禁用功能,不需要取消勾选即可,默认未勾选。 --- * **菜 单**可选生成或不生成,生成的情况下可以选择具体生成哪些菜单。 * **Admin控制器**可选生成或不生成,控制器名可进行自定义,控制器方法可选择需要的。 * * **Api控制器**可选生成或不生成,控制器名可进行自定义,控制器方法可选择需要的。 * **模 型**可选生成或不生成,模型名可进行自定义,自动时间戳默认选中,软删除功能默认选中。 * **验证器**可选生成或不生成,模型名可进行自定义。 --- * **字段设置** 字段设置为代码自动生成核心功能,支持设置以下内容: | 功能/设置 | 介绍 | | --- | --- | | 字段 | 表中的字段名,自动读取。 | | 类型 | 表中字段类型,自动读取。 | | 名称 | 表中的字段中文名,自动读取字段注释。 | | 默认值 | 表中的字段默认值,自动读取。 | | 列表 | 是否在后台列表视图显示以及api列表返回。 | | 排序 | 是否在后台列表中参与排序。 | | 表单 | 在表单页的输入类型,默认非表单字段;可选择多种类型,例如text,file,textarea等等。 | | 验证规则 | 表单字段的验证类型,例如非空,格式限制等等。目前只实现了非空和部分格式限制自动生成,其他验证过暂时可以自行手动添加。 | | 验证场景 | 在哪些场景下进行验证,例如后台添加(admin_add)时等 。| | 自定义验证规则 | 暂未开发,需要后续完善 | | 验证场景 | 是否在列表页keywords关键词搜索,一般name,title之类的字段可以选择。 | | 是否表单字段 | 是否在表单页面(添加和修改)显示 。 | | 自定义列表 | 当字段表单场景为select(下拉选择)或multi_select(多选)同时为非关联字段时,必须完善自定义数据列表,例如性别,需要在内容区域填写 `0||未知\n1||男\n2||女` ,其中`\n`无需填写,回车换行即可 | | 获取/修改器 | 例如int类型的日期时间字段,可以选择datetime。is_hot(是否热门)之类的可以选择switch。 | | 关联外键(关联设置) | 例如文章表的`user_id`(发布人)字段就为关联外键,关联着用户表(user),对应的模型调用方法为`belongsTo`。 关联外键当需要显示的时候,例如文章列表页显示发布人昵称,**关联显示字段**填写`nickname`即可。 | | 关联主键(关联设置) | 关联主键一般为`id`,例如用户表(user)的`id`字段关联着文章表,评论表,订单表等等。对应模型调用的方法有`hasOne`,`hasMany`等。 像用户表可能存在多个关联表,例如文章表(article),订单表(order),关联表模型应该填写所有关联的表,并用英文逗号分割,例如`article,order` | #### 代码生成 设置完菜单,视图,模型,控制器,验证器,字段等信息后,点击右下角的提交按钮即可生成对应的代码文件。生成的代码文件如下: - 控制器,所在目录`/app/admin/controller/`。 - 视图,所在目录`/app/admin/view/`。 - 模型,所在目录`/app/common/model/`。 - 验证器,所在目录`/app/common/validate/`。