前几天有点事情就没有更新学习状况。那么今天就是除夕了,我先祝大家新年快乐,在这里给大家拜个早年了。那么不多说了,接下来就来学习一下我们第四章连贯操作,那么连贯操作的什么呢?连贯操作可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作,也是ThinkPHP的ORM中的一个亮点。
需 掌 握 的 内 容
只要SQL可以实现的操作,基本上都可以用ThinkPHP的连贯操作来实现,并且不用考虑数据库之间的表达差异,具有可移植性。
连 贯 操 作 的 方 法
连贯操作仅在当次查询或者操作有效,完成后会自动清空连贯操作的所有传值(有个别特殊的连贯操作会记录当前的传值,如cache连贯操作)。简而言之,连贯操作的结果不会带入以后的查询。所有的连贯操作都返回当前的模型实例对象,其中带*标识的表示支持多次调用。
用 法
WHERE方法是使用最多的连贯操作方法
TABLE,如果不调用table方法,会自动获取模型对应或者定义的数据表
例如:
就是查询think_user表中,所有status等于1的数据。
DATA,如果不调用data方法,则会取当前的数据对象或者传入add和save的数据。
例如:
就是在think_model数据库里添加一条数据
FIELD,如果不调用field方法,则默认返回所有字段,和field('*')等效。
例如:
查询所有的id,name,age数据
查询所有数据
查询除了age以外的所有数据
ORDER,如果不调用order方法,按照数据库的默认规则。
例如:
表示对status降序,对id升序。
LIMIT,如果不调用limit方法,则表示没有限制。
例如:
查询think_model表中,1,3的所有数据。
PAGE,可以更加快速的进行分页查询。
例如:
表示查询第2页的内容,每一页显示2条数据。
GROUP,Group方法的参数只支持字符串。
例如:
表示按照用户的姓名进行分组
HAVING,having方法的参数只支持字符串。
例如:
表示年龄大于3的
JOIN,join方法支持多次调用。默认采用JOIN (等同于 INNER JOIN)方式。
例如:
UNION,Union方法支持多次调用。每个union方法相当于一个独立的SELECT语句。
例如:
查询think_model表中的所有的姓名
DISTINCT
例如:
对姓名进行唯一过滤
LOCK
Lock方法是用于数据库的锁机制,就会自动在生成的SQL语句最后加上 FOR UPDATE或者FOR UPDATE NOWAIT(Oracle数据库)。
VALIDATE
validate方法用于数据的自动验证,我们会在数据验证部分详细描述。
AUTO
auto方法用于数据的自动完成操作,具体使用我们会在数据自动完成部分描述。
SCOPE
scope方法的具体用法可以参考:3.1的新特性 命名范围。
FILTER,filter方法一般用于写入和更新操作,filter方法用于对数据对象的安全过滤。
例如:
目前filter方法不支持多个方法的过滤。
好啦,我们第四章就学习完了。在这里我再次祝福大家新年快乐,万事如意。新手上路,打卡学习,欢迎各位大佬的交流与指导,谢谢!
领取专属 10元无门槛券
私享最新 技术干货