首页
直播
壁纸
友链
搜索
1
MySQL如何解决深度分页问题?
11 阅读
2
buildadmin百度编辑器放两个只能显示一个
8 阅读
3
网站被 CC 攻击了?别慌,教你几招接地气的防护办法
7 阅读
4
thinkphp6 消息队列think-queue
6 阅读
5
microsoft store安装codex失败
5 阅读
服务器运维
后端技术
前端技术
梯子
数据库
小程序
登录
搜索
标签搜索
fastadmin
Redis
RabbitMQ
Go
服务器
codex
buildadmin
小程序
mysql
Nginx
Docker
Vue3
Node.js
MySQL优化
Linux
TypeScript
JWT
消息队列
Elasticsearch
搜索引擎
沿途的风景
累计撰写
37
篇文章
累计收到
0
条评论
首页
栏目
服务器运维
后端技术
前端技术
梯子
数据库
小程序
页面
直播
壁纸
友链
搜索到
1
篇与
» CRUD
的结果
2026-07-24
FastAdmin CRUD 代码生成器使用指南:一键生成增删改查
前言FastAdmin 的 CRUD 代码生成器是框架最核心的功能之一——只需要一条命令,就能根据数据库表结构自动生成控制器、模型、视图、JS、验证器和菜单,实现完整的增删改查。本文将全面讲解 CRUD 生成器的使用方法和进阶技巧。一、基础用法1.1 准备数据表先创建一张示例表:CREATE TABLE `fa_article` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `title` varchar(100) NOT NULL DEFAULT '' COMMENT '标题', `content` text COMMENT '内容', `category_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID', `author` varchar(50) NOT NULL DEFAULT '' COMMENT '作者', `status` enum('normal','hidden') NOT NULL DEFAULT 'normal' COMMENT '状态', `views` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '浏览量', `createtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间', `updatetime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章表';1.2 一键生成 CRUDphp think crud -t fa_article -c content/article参数说明:参数说明-t数据表名(带前缀)-c控制器路径,格式为 模块/控制器执行后自动生成以下文件:application/admin/controller/content/Article.php application/admin/model/Article.php application/admin/validate/Article.php application/admin/view/content/article/index.html application/admin/view/content/article/add.html application/admin/view/content/article/edit.html application/admin/view/content/article/recyclebin.html public/assets/js/backend/content/article.js1.3 生成菜单php think menu -c content/article执行后在后台菜单管理中会自动出现"文章管理"菜单。二、字段注释驱动生成FastAdmin 的 CRUD 生成器会读取数据库字段注释来决定前端控件的渲染方式。这是最强大的特性之一:2.1 字段注释格式`status` enum('normal','hidden') NOT NULL DEFAULT 'normal' COMMENT '状态:normal=正常,hidden=隐藏'生成器会解析注释中的 normal=正常,hidden=隐藏,自动渲染为下拉选择框:<select class="form-control selectpicker" name="status"> <option value="normal">正常</option> <option value="hidden">隐藏</option> </select>2.2 常用字段类型映射数据库字段类型自动生成的控件varchar文本输入框text富文本编辑器int(含 time 关键字)日期时间选择器enum下拉选择框decimal数字输入框date日期选择器2.3 特殊字段名约定FastAdmin 对特定字段名有特殊处理:字段名自动行为createtime / updatetime自动维护创建/更新时间status列表页显示状态切换按钮weigh自动添加拖拽排序功能image / images自动生成图片上传组件file / files自动生成文件上传组件ids生成多选关联组件三、进阶用法3.1 关联模型生成如果表中有外键字段,可以通过命名约定自动生成关联:-- 主表 CREATE TABLE `fa_category` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 从表 CREATE TABLE `fa_article` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL DEFAULT '', `category_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;在模型中定义关联:// application/admin/model/Article.php namespace app\admin\model; use think\Model; class Article extends Model { // 关联分类 public function category() { return $this->belongsTo('Category', 'category_id', 'id'); } }在控制器中启用关联查询:// application/admin/controller/content/Article.php public function index() { $this->relationSearch = true; $this->searchFields = 'id,title,category.name'; // 设置关联 $this->with = ['category']; return parent::index(); }3.2 强制覆盖生成php think crud -t fa_article -c content/article -f 1-f 1 参数会覆盖已存在的文件,适合修改表结构后重新生成。3.3 删除生成的文件php think crud -t fa_article -c content/article -d 1-d 1 参数会删除该表对应的所有 CRUD 文件。四、自定义模板4.1 修改生成模板CRUD 模板位于 extend/fast/crud/tpl/ 目录:extend/fast/crud/tpl/ ├── controller.tpl # 控制器模板 ├── model.tpl # 模型模板 ├── validate.tpl # 验证器模板 ├── index.tpl # 列表视图模板 ├── add.tpl # 添加视图模板 ├── edit.tpl # 编辑视图模板 └── javascript.tpl # JS 模板4.2 自定义列表字段显示在 JS 文件中控制列表列的显示:// public/assets/js/backend/content/article.js define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { var Controller = { index: function () { Table.init({ extend: { index_url: 'content/article/index', add_url: 'content/article/add', edit_url: 'content/article/edit', del_url: 'content/article/del', table: 'article', } }); var table = $("#table"); // 初始化表格 table.bootstrapTable({ url: $.extend({}, Table.config.url), columns: [ [ {checkbox: true}, {field: 'id', title: __('Id')}, {field: 'title', title: __('Title')}, {field: 'category.name', title: __('Category')}, {field: 'author', title: __('Author')}, {field: 'status', title: __('Status'), searchList: {"normal": __('Normal'), "hidden": __('Hidden')}, formatter: Table.api.formatter.status}, {field: 'views', title: __('Views')}, {field: 'createtime', title: __('Createtime'), formatter: Table.api.formatter.datetime}, {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} ] ] }); Table.api.bindevent(table); }, add: function () { Controller.api.bindevent(); }, edit: function () { Controller.api.bindevent(); }, api: { bindevent: function () { Form.api.bindevent($("form[role=form]")); } } }; return Controller; });五、CRUD 常用参数汇总参数说明示例-t数据表名(带前缀)-t fa_user-c控制器路径-c user/index-f强制覆盖-f 1-d删除生成文件-d 1-o输出文件路径-o /tmp/crud-uURL 绑定的模型-u model_name--local不调用远程 API--local=1六、最佳实践先设计表结构再生成:字段注释直接决定生成质量,务必写清楚生成后不要改生成的文件名:保持命名一致性,便于重新生成自定义逻辑在生成文件基础上修改:先 php think crud 生成骨架,再手动添加业务逻辑修改表结构后重新生成:用 -f 1 覆盖,但注意备份自定义代码善用关联搜索:$this->relationSearch = true 可以快速实现跨表搜索总结FastAdmin CRUD 生成器的核心思想是"约定优于配置"——通过数据库字段注释驱动代码生成,大幅减少重复劳动。掌握字段注释规范和关联模型用法后,90% 的后台增删改查功能可以在几分钟内完成。
2026年07月24日
0 阅读
0 评论
0 点赞
0:00