上一篇文章讲解“数据库查询构造器-链式操作的方法三”,本篇文章讲解“数据库查询构造器-链式操作的方法四”。
十四、lock
Lock方法是用于数据库的锁机制,如果在查询或者执行操作的时候使用。
1)lock方法的基本使用
在Index控制器中,新建lockQuery方法:
预览:
注意:
1.就会自动在生成的SQL语句最后加上FOR UPDATE或者FOR UPDATE NOWAIT(Oracle数据库)。
2)lock传入字符串
lock方法支持传入字符串用于一些特殊的锁定要求。
修改Index控制器下的lockQuery方法:
预览:
十五、cache
cache方法用于查询缓存操作,也是连贯操作方法之一。
cache可以用于select、find、value和column方法,以及其衍生方法,使用cache方法后,在缓存有效期之内不会再次进行数据库查询操作,而是直接获取缓存中的数据,关于数据缓存的类型和设置可以参考缓存部分。
1)基本使用
在Index控制器中,新建caQuery方法:
预览:
注意:
1.缓存配置文件位于(ThinkPHP5.1):config/cache.php
2.生成的缓存文件位置:runtime/cache/
第一次查询结果会被缓存,第二次查询相同的数据的时候就会直接返回缓存中的内容,而不需要再次进行数据库查询操作。
2)设置缓存有效期
默认情况下,缓存有效期是由默认的缓存配置参数决定的,但cache方法可以单独指定。
修改Index控制器下的caQuery方法:
预览:
注意:
1.表示对查询结果的缓存有效期60秒。
3)指定缓存标识
修改Index控制器下的caQuery方法:
预览:
注意:
1.指定查询缓存的标识可以使得查询缓存更有效率。
4)通过缓存标识,在外部获取缓存数据
指定缓存标识后,在外部就可以通过\think\Cache类直接获取查询缓存的数据。
Index控制器下的caQuery方法不变,在admin模块的Index控制器下的index方法中获取缓存的数据。
预览:
注意:
1.可以再测试缓存时间,index/index/caQuery方法中缓存时间为60s,过了60s,在admin/index/index中将获取不到缓存数据,因为缓存过期。
5)设置缓存标签
cache方法支持设置缓存标签。
修改Index控制器下的caQuery方法:
6)缓存自动更新
这里的缓存自动更新是指一旦数据更新或者删除后会自动清理缓存(下次获取的时候会自动重新缓存)。
当你删除或者更新数据的时候,可以调用相同key的cache方法,会自动更新(清除)缓存。
修改Index控制器下的caQuery方法:
预览:
注意:
1.最后查询的数据不会受第一条查询缓存的影响,确保查询和更新或者删除使用相同的缓存标识才能自动清除缓存。
7)使用find方法并且使用主键查询的情况,不需要指定缓存标识,会自动清理缓存
修改Index控制器下的caQuery方法:
预览:
最后查询的数据会是更新后的数据。
十六、comment
COMMENT方法 用于在生成的SQL语句中添加注释内容。
在Index控制器中,新建comQuery方法:
预览:
十七、fetchSql
fetchSql用于直接返回SQL而不是执行查询,适用于任何的CURD操作方法。
在Index控制器中,新建fsQuery方法:
预览:
十八、failException
failException设置查询数据为空时是否需要抛出异常,如果不传入任何参数,默认为开启,用于select和find方法。
1)基本用法
在Index控制器中,新建failQuery方法
预览:
不传入参数,默认为开启,开启后查询数据为空时,抛出异常。
修改Index控制器下的failQuery方法
预览:
注意:
1.failException设置查询数据为空时是否需要抛出异常,如果不传入任何参数,默认为开启,查询数据为空时,抛出异常;传入false代表关闭,查询数据为空时,不抛出异常。
2)查空报错
修改Index控制器下的failQuery方法:
预览:
注意:
1.查询单条数据使用:findOrFail
十九、sequence
sequence方法用于pgsql数据库指定自增序列名,其它数据库不必使用,用法为:
ThinkPHP5连载为卓象程序员原创,转载请联系卓象程序员
关注卓象程序员,定期发布技术文章
下一篇讲解“查询构造器-聚合查询”
领取专属 10元无门槛券
私享最新 技术干货