ThinkPHP查询语言之SQL查询

来自站长百科
跳转至: 导航、​ 搜索

导航:上一页

ThinkPHP内置的ORM和ActiveRecord模式实现了方便的数据存取操作,而且新版增加的连贯操作功能更是让这个数据操作更加清晰,但是ThinkPHP仍然保留了原生的SQL查询和执行操作支持,为了满足复杂查询的需要和一些特殊的数据操作,SQL查询的返回值因为是直接返回的Db类的查询结果,没有做任何的处理。而且可以支持查询缓存。主要包括下面两个方法:

  • query方法

query方法是用于sql查询操作,和select一样返回数据集,例如:

PHP代码

$Model = new Model() // 实例化一个model对象 没有对应任何数据表    

$Model->query("select * from think_user where status=1");    
  • execute方法

用于更新和写入数据的sql操作,返回影响的记录数,例如:

PHP代码

$Model = new Model() // 实例化一个model对象 没有对应任何数据表    

$Model->execute("update think_user set name='thinkPHP' where status=1");    

关于原生SQL操作的一点补充

通常使用原生SQL需要手动加上当前要查询的表名,如果你的表名以后会变化的话,那么就需要修改每个原生SQL查询的sql语句了,针对这个情况,TP还提供了一个小的技巧来帮助解决这个问题。例如:

PHP代码


$model = M("User");    

$model->query('select * from __TABLE__ where status>1');    

我们这里使用了__TABLE__ 这样一个字符串,系统在解析的时候会自动替换成当前模型对应的表名,这样就可以做到即使模型对应的表名有所变化,仍然不用修改原生的sql语句。