第十四章:第20节thinkPHP框架——操作数据库(七)模型对象详解——更新、删除、查询数据

更新于:2018-01-24 16:35:09

2)更新


数据的更新也可以使用save方法,save方法的第二个参数传更新条件。


1.png

1.png


详解:


save方法更新数据也有三种方式,第一种方式很好理解,也是最常用的方式。


后两种方式需要配合isUpdate方法一块使用,根据主键值进行更新。如果data数据中没有主键值则会报错;如果没有使用isUpdate方法,即便data数据中有主键值,也会执行新增数据操作,很容易造成主键冲突错误。


拓展:


有个saveAll方法,由save方法衍生出来的,可以批量增加、更新数据。平时用的少,使用方式很简单,大家可参考手册,就不做介绍了。


3)删除


删除数据还是使用delete方法。


4)查询


查询数据时,推荐大家使用select、find、value方法,这都是Query类的方法。


Model类下有两个静态方法get和all,get方法相当于find,all相当于select,演示:


1.png


详细说明:


① all、get是静态方法,静态方法也可以使用->调用。get方法第一个参数主键ID必填。

② field、where方法都是Query类的方法,返回值是Query类实例化对象,所以get、all方法前不能使用Query类的方法。


楠神基本上不使用这两个方法的,太不方便。要说这两个方法的好处,那就是可以开启缓存。演示:


1.png


第一次执行


1.png


297行代码:执行了SQL语句,获取到了数据,并缓存。


298行代码 没有再从数据库获取数据,而是从缓存中获取数据


第二次执行


1.png


297行、298行代码 没有再执行SQL语句,直接从缓存中获取数据。


说明:


它这个缓存做了长久保存,


1.png


缓存数据存到了这个文件上。


后面楠神会带大家去实现缓存的功能的。


拓展:


缓存是可以分为长缓存和临时缓存。


长缓存是指:把一块数据存到文件、内存、数据库中,供多次http请求使用。


临时缓存是指:只供一次http请求使用,从脚本开始一直到脚本结束。如果某一数据在整个脚本运行中多次使用,当这个数据第一次通过计算或从数据库获得后,就应该存储起来(使用静态变量内存存储)供接下来的程序运算使用。这样可有效避免重复做一段复杂的运算。


不是每个SQL查询语句都适合使用长缓存的,尤其一些更新频繁的数据就不适合,会造成缓存的数据与数据库的数据不一样。


临时缓存挺适合查询数据库的。假如一次完整的脚本运行,需要从数据库获取好几次相同的数据。当第一次获取到时,PHP脚本就应该(使用静态变量)存起来,不应该再去“麻烦”mysql做一次运算。


总结:


模型类继承了Model类,楠神就简单说这些吧,想了解更多大家去看手册。反正我是一点都不喜欢Model类的方法,懒得花时间去研究它,尤其不喜欢查询的数据以对象的形式返回,打印后不方便阅读。


从下节开始我会把后面定义的模型类都继承Query类,当然不反对大家使用模型类继承Model类,看个人喜好了。


本节学习代码》》》