2)更新
数据的更新也可以使用save方法,save方法的第二个参数传更新条件。
详解:
save方法更新数据也有三种方式,第一种方式很好理解,也是最常用的方式。
后两种方式需要配合isUpdate方法一块使用,根据主键值进行更新。如果data数据中没有主键值则会报错;如果没有使用isUpdate方法,即便data数据中有主键值,也会执行新增数据操作,很容易造成主键冲突错误。
拓展:
有个saveAll方法,由save方法衍生出来的,可以批量增加、更新数据。平时用的少,使用方式很简单,大家可参考手册,就不做介绍了。
3)删除
删除数据还是使用delete方法。
4)查询
查询数据时,推荐大家使用select、find、value方法,这都是Query类的方法。
Model类下有两个静态方法get和all,get方法相当于find,all相当于select,演示:
详细说明:
① all、get是静态方法,静态方法也可以使用->调用。get方法第一个参数主键ID必填。
② field、where方法都是Query类的方法,返回值是Query类实例化对象,所以get、all方法前不能使用Query类的方法。
楠神基本上不使用这两个方法的,太不方便。要说这两个方法的好处,那就是可以开启缓存。演示:
第一次执行
297行代码:执行了SQL语句,获取到了数据,并缓存。
298行代码 没有再从数据库获取数据,而是从缓存中获取数据
第二次执行
297行、298行代码 没有再执行SQL语句,直接从缓存中获取数据。
说明:
它这个缓存做了长久保存,
缓存数据存到了这个文件上。
后面楠神会带大家去实现缓存的功能的。
拓展:
缓存是可以分为长缓存和临时缓存。
长缓存是指:把一块数据存到文件、内存、数据库中,供多次http请求使用。
临时缓存是指:只供一次http请求使用,从脚本开始一直到脚本结束。如果某一数据在整个脚本运行中多次使用,当这个数据第一次通过计算或从数据库获得后,就应该存储起来(使用静态变量内存存储)供接下来的程序运算使用。这样可有效避免重复做一段复杂的运算。
不是每个SQL查询语句都适合使用长缓存的,尤其一些更新频繁的数据就不适合,会造成缓存的数据与数据库的数据不一样。
临时缓存挺适合查询数据库的。假如一次完整的脚本运行,需要从数据库获取好几次相同的数据。当第一次获取到时,PHP脚本就应该(使用静态变量)存起来,不应该再去“麻烦”mysql做一次运算。
总结:
模型类继承了Model类,楠神就简单说这些吧,想了解更多大家去看手册。反正我是一点都不喜欢Model类的方法,懒得花时间去研究它,尤其不喜欢查询的数据以对象的形式返回,打印后不方便阅读。
从下节开始我会把后面定义的模型类都继承Query类,当然不反对大家使用模型类继承Model类,看个人喜好了。