关于数据库:教你从创建数据表到实现最基础增删改查的实现全过程小白也能轻松学会带附件

3次阅读

共计 2014 个字符,预计需要花费 6 分钟才能阅读完成。

很多应用了 CRMEB 单商户零碎的童鞋在进行二开的时候,都会遇到新建了数据表之后不晓得对数据表怎么进行操作。那么,这篇文章将带你残缺的实现一遍,当前就不会怕啦。

创立数据表
就以最简略的为例,创立一个学生的信息表

创立的表为下图所示,其中 id 为数据表自增主键

二、创立数据表模型文件

程序中创立数据表对应的 model 文件,目录在 app/model 下,该目录下的文件夹是以功能模块进行分类的,咱们先创立一个 test 文件夹。创立数据表模型 Student.php 文件。

该模型类必须要继承 BaseModel,然而能够不应用 ModelTrait,外面仅实现了三个办法如果不需要的话能够不必援用。

而后设置数据表主键

protected $pk = 'id';
设置数据表名称

protected $name = 'student';
设置实现之后,此 Model 会和数据表进行关联,是程序对表进行操作的重要一个环节创立实现 model 类之后,接下来咱们开始实现 Dao 层数据操作的性能实现。

二、创立 dao 层数据库操作文件

在 app/dao 文件下创立 test 文件夹,并创立 StudentDao.php 的 Dao 层文件。

创立实现之后,须要继承 BaseDao,并设置之前创立的 Student 模型

protected function setModel(): string  

{return Student::class;}

在这里,咱们对数据表的增删改查别离写一个办法,查问分为多条和单条,一共五个办法。

应用 $this->getModel() 办法能够获取在上方设置的模型实例化对象,该文件下的所有办法都能够应用此办法进行模型的实例化,

新增数据时,应用 $this->getModel()->save($data); 即可实现数据的新增逻辑,$data 为想要新增的数据,数组类型。

对于数据的查问,分为单条和多条查问,咱们在这里分为两个办法去实现。同理应用
$this->getModel()->where($where)->find(); 能够实现单条查问的逻辑,$where 是查问的条件,例如:$where = [‘name’=>’张三’],这个条件就是查问 name 姓名为张三的数据对象。如果应用主键进行单条查问,能够间接应用 $this->get($id) 的办法获取。

多条数据查问,如果不分页的状况下,写法和单条一样,只是将 find() 改为 select(),如果须要分页查问须要传入 page 和 limit(当前页数和每页条数)而后进行分页查问

其中 when 判断了当 page 和 limit 传入的数据都大于 0 的时候才会进行分页查问,如果传入 0 或者不传,则默认查问全副的数据。

批改数据,批改数据须要传入一个条件和一个须要批改的数组变量,依据条件去批改对应的数据,$where 负责查问对应的数据,将对应的数据批改成 $data 外面携带的参数,留神,$where 和 $data 外面的数组键必须是数据表外面存在的字段,此办法能够批改单条或者多条,取决于 $where 的查问是单条还是多条,会返回被批改的数据条数。

删除数据,如果数据表外面设置的删除的字段,能够应用批改的办法将字段进行批改做到软删除,如果须要间接删除数据,则可是应用 delete() 办法。

三、创立 services 层数据处理文件

在 app/services 文件下创立 test 文件夹,并创立 StudentServices.php 的 services 层文件。创立实现之后,须要继承 BaseServices,并注入 StudentDao

本次咱们不对数据做任何解决,只是实现数据表的增删改查所以,在 services 文件中能够间接写好对应的调用,也能够不必写对应的办法,零碎会主动找到 dao 层的办法进行解决

创立控制器以及路由文件
路由文件减少对应五个办法的路由,增加,查问单条,查问多条,批改,删除

对应控制器中的五个办法,控制器须要先注入 StudentServices,能力应用 services 中的办法,控制器中,获取参数应用 request 中的 getMore 或者 postMore 来获取,到此调用对应的接口,就能够实现数据库简略的增删改查了。

总结:CRMEB 零碎中,每个层级是十分分明的,controller 用来承受和发送数据,services 用来组合数据逻辑解决,dao 层是用来对数据库的增删改查,model 是数据库的模型类,弄懂了这些逻辑和文件层级,当前在在开发中会更不便和快捷。

能够对照附件钻研学习,有遇到不懂不明确之处能够在下方留言

源码附件曾经打包好上传到百度云了,大家自行下载即可~

链接: https://pan.baidu.com/s/14G-b…
提取码: yu27
百度云链接不稳固,随时可能会生效,大家放松保留哈。

如果百度云链接生效了的话,请留言通知我,我看到后会及时更新~

GIT 我的项目举荐:蕴含多端免受权可商用

附件地址:http://github.crmeb.net/u/defu

正文完
 0