我们通过一个具体案例, 来看看如何应用`hyperf-admin`快速实现 ### 1.需求描述 ​ 实现一个某校年级内各班级学生的各科成绩管理后台, 要求如下 1. 列表显示学生 年级,班级,学习,学科,成绩,时间,性别,年龄 2. 可以按成绩 倒序/正序排列 3. 可以批量导入/导出学生成绩 4. 可以通过 年级,学生名称,班级 等条件筛选 5. 最好列表可以分页签直接显示各科成绩 6. 没有原型图 ### 2. 数据库定义 这里不做太复杂的设计, 仅用一张表来完成此需求 ```sql CREATE TABLE `student_score` ( `id` int(12) unsigned NOT NULL AUTO_INCREMENT, `grade` tinyint(4) unsigned NOT NULL COMMENT '年级', `class` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '班级', `subject` tinyint(4) unsigned NOT NULL COMMENT '学科', `score` int(12) unsigned NOT NULL DEFAULT '0' COMMENT '分数', `name` varchar(10) NOT NULL DEFAULT '' COMMENT '学生名称', `sex` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '性别, 0女生, 1男生', `create_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 接下来在`MySql`中创建表 ### 3.功能开发 1. `hyperf`中添加db信息 ```php // config/autoload/databases.php 'local' => db_complete([ 'host' => '127.0.0.1', 'database' => 'test', 'username' => 'root', 'password' => 'root' ]) ``` 2. 通过`DevTools`开发者工具创建 `student_score` 相关的 `Model`, `Controller` ![YPdEli](https://gitee.com/daodao97/asset/raw/master/uPic/YPdEli.png) 选择好相应的表后, 点击提交, 此时工具已经帮我们创建好相应的`app/Controller/StudentScoreController.php`和`app/Model/Test/StudentScore.php` 3. 添加目录和菜单 ![cs0SYX](https://gitee.com/daodao97/asset/raw/master/uPic/cs0SYX.png) 注册路由 ```php // config/routes.php register_route('/student_score', StudentScoreController::class); ``` 此时我们也已经完成了基础的`CRUD`开发 ![MEoM4p](https://gitee.com/daodao97/asset/raw/master/uPic/MEoM4p.png) 哦对了, 还有各种筛选条件呢? 也很简单, 在 `scaffoldOptions` 中增加 `filter`配置即可 ```php public function scaffoldOptions() { return [ 'filter' => [ 'grade', 'class', 'subject', 'name%', 'score|分数' => [ 'type' => 'input-range', 'select_type' => 'between' ] ], ]; } ``` ![u68v1D](https://gitee.com/daodao97/asset/raw/master/uPic/u68v1D.png) 还有, 大家别忘了, 需求中还要去可以按页签显示, 改怎么办呢, 这个ui可有点复杂啊, 不过在`hyperf-admin`里也同样简单 `scaffoldOptions` 中增加 `table.tabs`配置即可 ```php public function scaffoldOptions() { return [ 'table' => [ 'tabs' => [ [ 'label' => '语文', 'value' => 1, 'icon' => 'el-icon-s-grid', ], [ 'label' => '数学', 'value' => 2, 'icon' => 'el-icon-s-grid', ], ] ], ]; } ``` ![Ax0WWD](https://gitee.com/daodao97/asset/raw/master/uPic/Ax0WWD.png) 至此我们已经完成了绝大部分的功能开发, 如果使用熟练, 我们应该能在十分钟内完成整个功能的前后端开发, 而且还支持复杂的前端效果. ?> 当然`hyperf-admin`还支持更多复杂的功能, 快快用你明亮的眼睛去发现他吧.