共计 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