🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] > 代码自动生成功能的url为`/admin/generate/index`,可以一键生成控制器,模型,验证器,视图。自动建表功能已经删除,建议使用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/d0/63/d06340f4e4e3375af8f87f9393f34fb3_3358x1480.png) #### 选择表 选择需要生成代码的表,例如`user`表,选择之后界面如下: ![](https://img.kancloud.cn/ee/9c/ee9c43ef41cd619dbda5c7dd47c6580f_3332x1614.png) #### 自动生成设置 * **中文名**为菜单,控制器,模型,验证器的中文名称,此名称默认取表名的注释。 * **自动生成类名**主要为控制器,模型,验证器的类名,默认为表名转大写驼峰。 * **列表删除**为`index`视图中的删除功能,不需要取消勾选即可,默认选中。 * **列表添加**为`index`视图中的添加功能,不需要取消勾选即可,默认选中。 * **列表刷新**为`index`视图中的刷新功能,不需要取消勾选即可,默认选中。 * **列表导出**为`index`视图中的导出功能,不需要取消勾选即可,默认选中。 * **列表启用/禁用**为`index`视图中的启用/禁用功能,不需要取消勾选即可,默认未勾选。 --- * **菜 单**可选生成或不生成,生成的情况下可以选择具体生成哪些菜单。 * **控制器**可选生成或不生成,控制器名可进行自定义,控制器方法可选择需要的。 * **模 型**可选生成或不生成,模型名可进行自定义,自动时间戳默认选中,软删除功能默认选中。 * **验证器**可选生成或不生成,模型名可进行自定义。 --- * **字段设置** 字段设置为代码自动生成核心功能,支持设置以下内容: | 功能/设置 | 介绍 | | --- | --- | | 字段名 | 表中的字段名,自动读取。 | | 字段类型 | 表中字段类型,自动读取。 | | 是否列表字段 | 是否在列表视图显示。 | | 是否搜索字段 | 是否在列表页keywords关键词搜索,一般name,title之类的字段可以选择。 | | 是否表单字段 | 是否在表单页面(添加和修改)显示 。 | | 表单类型 | 在表单页的输入类型,例如text,file,textarea等等。 | | 表单验证 | 表单字段的验证类型,例如非空,长度限制等等。目前只实现了非空自动生成,其他验证过暂时可以自行手动添加。 | | 更多设置 | 更多设置介绍 | | --- | --- | | 默认值: | 表单内的默认值。 | | 获取/修改器 | 例如int类型的日期时间字段,可以选择datetime。is_hot(是否热门)之类的可以选择switch。 | | 列表排序 | 是否参与列表页的排序,例如注册时间,账户余额之类的可以勾选。 | | 验证场景 | 表单字段需要验证的场景,目前有后台的增改,api模块的增改,index模块的更改。 | | 关联设置 | 有三个选项,非关联字段,关联外键,关联主键。**下面几行单独讲关联外键和关联主键的含义和用法。** | | 关联外键(关联设置) | 例如文章表的`user_id`(发布人)字段就为关联外键,关联着用户表(user),对应的模型调用方法为`belongsTo`。 关联外键当需要显示的时候,例如文章列表页显示发布人昵称,**关联显示字段**填写`nickname`即可。 | | 关联主键(关联设置) | 关联主键一般为`id`,例如用户表(user)的`id`字段关联着文章表,评论表,订单表等等。对应模型调用的方法有`hasOne`,`hasMany`等。 像用户表可能存在多个关联表,例如文章表(article),订单表(order),关联表模型应该填写所有关联的表,并用英文逗号分割,例如`article,order` | #### 代码生成 设置完菜单,视图,模型,控制器,验证器,字段等信息后,点击右下角的提交按钮即可生成对应的代码文件。生成的代码文件如下: - 控制器,所在目录`/application/admin/controller/`。 - 视图,所在目录`/application/admin/view/`。 - 模型,所在目录`/application/common/model/`。 - 验证器,所在目录`/application/common/validate/`。