thinkphp5-fast-curd

项目介绍

适用于ThinkPHP5(简单、快速的构建CURD)

通过以下代码简单的常规CURD就完成了,接下来就可以去处理前端表单或列表了

...

// 类放置位置

use app\traits\Resources;

use app\models\ArticleModel;

class Article extends Controller

{

use Resources;

public function __construct(Request $request = null)

{

parent::__construct($request);

$this->db = new ArticleModel();

}

}

大部分需求可以使用控制器前置操作或者模型事件 加上模型关联处理

如不能满足需求可在控制器内重写Resources内方法

PHP方法优先级

自身方法 > trait > 父类

class BaseController

{

public function index()

{

return 'base';

}

}

class ArticleController extends BaseController

{

use Test;

public function index()

{

return 'article';

}

}

trait Test

{

public function index()

{

return 'trait';

}

public function create()

{

return 'create';

}

}

实现代码

namespace app\traits;

/**

* @author renjianfei

* @datetime 2018/09/13

*/

trait Resources

{

private $db = null;

private $pk = 'id';

private $softDeleteKey = 'visible';

/**

* 排序方式

*/

protected function sort($sort = '')

{

return empty($sort) ? $this->pk .' desc' : $sort;

}

/**

* 列表筛选

*/

protected function filter()

{

return array_filter(input());

}

/**

* @param $list 列表数据

*/

protected function afterIndex($list = [])

{

// TODO xxxx

}

/**

* 显示资源列表

*/

public function index()

{

$list = $this->db->order($this->sort())->where($this->filter())->paginate();

$this->afterIndex($list);

return view('',[

'list' => $list,

]);

}

/**

* 显示创建资源表单前

*/

public function beforeCreate()

{

}

/**

* 显示创建资源表单

*/

public function create()

{

$this->beforeCreate();

return view();

}

/**

* 保存新建的资源前置操作

*/

protected function beforeSave()

{

}

/**

* 保存新建的资源

*/

public function save()

{

$this->beforeSave();

$res = $this->db->allowField(true)->save(array_filter(input())) ? $this->success('操作成功') : $this->error('保存失败');

}

/**

* 显示指定的资源

*/

public function read($id)

{

$info = $this->db->findOrFail($id);

return view('',[

'info' => $info

]);

}

/**

* 显示指定资源表单

*/

public function edit($id)

{

$info = $this->db->findOrFail($id);

return view('edit',[

'info' => $info

]);

}

/**

* 更新资源前

*/

public function beforeUpdate()

{

}

/**

* 保存更新的资源

*/

public function update($id)

{

$this->beforeUpdate();

$this->db->allowField(true)->save(input(),[$this->pk => $id]) ? $this->success('保存成功',url('index')) : $this->error('保存失败');

}

/**

* 软删除指定的资源

*/

public function delete($id)

{

$this->db->update([

$this->softDeleteKey = 0

],[

'id' => $id

]);

}

/**

* 真实删除某行记录

*/

public function destroy($id)

{

$this->db->where('id', $id)->delete() ? $this->success('删除成功') : $this->error('删除失败');

}

}

php自动生成curd,ThinkPHP5 快速curd相关推荐

  1. 如何使用sublime自动生成html,Sublime快速生成html页面

    作为一名Phper,我常用的IDE,除了PhpStorm之外,就是Sublime text. Sublime text 简洁,开机快,占内存少. 今天介绍的是,Sublime text 安装了强大的插 ...

  2. vscode不会自动生成html,vscode 快速生成html

    CoolTrayIcon4.0 CoolTrayIcon:在任务栏放置图标的控件,是同类空间中功能最为完善和强大的. 1.支持动态图标 2.交互式气球样式的提示框 3.支持bitmaps到icons的 ...

  3. Stark 组件:快速开发神器 —— 自动生成 URL

    说道 Stark 你是不是不会想到他--Tony Stark,超级英雄钢铁侠,这也是我的偶像. 不过我们今天要开发的 Stark 组件,倒是跟他的人工智能助手 JARVIS 有些类似,是帮助我们快速开 ...

  4. Word排版如何快速自动生成目录,简单实用,一看就懂!

    都说 "人靠衣装马靠鞍",的确如此,不光是人需要收拾的干净利落,我们的文章排版也是如此,只有当你的界面排版干净整洁时,才有让人阅读下去的欲望.那么现在问题来了,如何在排版中快速自动 ...

  5. 如何快速自动生成并定制报表

    如何快速自动生成并定制报表 作者: ---------- ,如转载请保证本文档的完整性,并注明出处. 欢迎光临 C++ Builder 研究,http://www.ccrun.com/doc/go.a ...

  6. 计算机应用目录怎么生成,自动生成目录怎么弄-excel超链接应用:快速生成目录的几个方法-下...

    编按:哈喽,大家好!在上篇文章中,我们说到了基本的制作目录的方法,以及用宏表函数和超链接函数制作目录.用快捷键CTRL+F制作目录的方法.今天我们要分享的另外三种方法,保证小伙伴们闻所未闻见所未见,一 ...

  7. 制作新网络框架快速自动生成消息结构体的编辑器

    这两天制作了一个自动生成代码脚本的窗体编辑器 目前还没有做过第一行可以选择生成的脚本类型,分请求消息和回应消息两种结构体脚本 第二行可以手动输入命名空间,第三行手动输入文件的名称,类名与文件名称相同 ...

  8. [快速入门]Spring Boot+springfox-swagger2 之RESTful API自动生成和测试

    Swagger是自动生成 REST APIs文档的工具之一.Swagger支持jax-rs, restlet, jersey.springfox-swagger是Spring生态的Swagger解决方 ...

  9. mybaitis快速生成_Mybatis中使用mybatis-generator结合Ant脚本快速自动生成Model、Mapper等文件...

    使用过Mybatis的同学都知道,针对每一个项目中使用到的数据库表都需要建立其对应的数据库增删改查xxxMapper.xml文件.实体类xxx.java文件以及其他类用来调用进行数据库操作的xxxMa ...

最新文章

  1. html input type=file 的属性及api
  2. Scala:没有continue,break怎么办?
  3. 牛客练习赛 67——ST表
  4. 软件测试用例的优点和缺点,浅析黑盒测试和白盒测试各自的优缺点
  5. 【Elasticsearch】Elasticsearch通过reroute api 重新分配分片
  6. 【转】HashMap,ArrayMap,SparseArray源码分析及性能对比
  7. 广告roi怎么计算公式_信息流ROI出价技巧详解及计算公式
  8. ruby环境变量的文件读取形式
  9. 8.企业安全建设指南(金融行业安全架构与技术实践) --- 安全考核
  10. mysql用binlog回复_mysql binlog回复数据,亲测
  11. python按行拆分表格_Pandas进阶之DataFrame行列拆分
  12. SCM供应链管理系统介绍:企业SCM供应链系统应用领域、优势、功能详解
  13. 知识点二十五:启发式搜索算法——A*算法
  14. win11 即将来临 —— 你真的会管理你的Windows 10吗?
  15. rc时间常数定义_时间常数RC的计算方法
  16. python高级数据筛选的方法_使用python对多个txt文件中的数据进行筛选的方法
  17. Ubuntu 16.04下安装Preempt_rt
  18. 净现值与投资准则 - 财务管理(八)
  19. python把英语句子成分字母_求一个可以分析英语句子成分的软件或网站
  20. 中国卫星互联网产业发展现状调研与投资前景评估报告2021年版

热门文章

  1. matlab 合成孔径,逆合成孔径成像MATLAB算法)配书源代码
  2. AntD Upload在React useState中使用问题
  3. word罕见问题 解决记录
  4. [展览人周刊]华展云20170626期
  5. 关于 Java 中类型转换的一些“迷津指点”
  6. 计算机软件的著作权登记证书在哪些地方可以申请?有什么注意事项?
  7. cad特性匹配快捷键命令_cad特性匹配快捷键命令_CAD快捷特性和特性匹配
  8. SQL计算两个日期之间的工作日天数
  9. openni+linux+arm,Jetson tk1 安装OpenNI 1 +Xtion Pro +NiTE
  10. 统考计算机考试试题和答案解析