在thinkphp里面执行原生的sql语句

怎样在thinkphp里面执行原生的sql语句?
$Model = new Model();//或者 $Model = D(); 或者 $Model = M();
$sql = "select * from `order`";
$voList = $Model->query($sql);
只是需要new一个空的模型继承Model中的方法。
注意query是查功能,execute是增删改功能
-----------------------------------------------
查询和读取属性值的实例:
$sql = "select * from goods";
$Model = M();
$result = $Model->query($sql);
foreach ($result as $k=>$val){
$goods_id = $val["goods_id"];
}
================================================
tP的模型可以支持原生SQL操作,提供了query和execute两个方法,为什么原生SQL还要区分两个方法呢,原因有两个:
1、返回类型不同
query用于查询,返回的是数据集,和select或者findall一样,所以可以直接在模板里面使用volist标签输出query的查询结果
execute用于写操作,返回的是状态或者影响的记录数

2、读写统计需要
为了便于统计当前的数据读写次数,把数据库的读和写操作分开(对应的就是query和execute)
使用原生SQL很简单,我们甚至不需要实例化任何的模型,例如:
$Model = new Model(); // 实例化一个空模型
下面的方法是等效的
$Model = D(); 或者 $Model = M();
// 下面执行原生SQL操作
$Model->query('select * from think_user where status=1');
$Model->execute('update think_user set status=1 where id=1');
如果你实例化了某个模型,仍然可以执行原生SQL操作,不受影响,例如:
$User = D('User');
$User->query('select * from think_user where status=1');
$User->execute('update think_user set status=1 where id=1');

在这种情况下面,我们可以简化SQL语句的写法,例如:
$User->query('select * from __TABLE__ where status=1');
$User->execute('update __TABLE__ set status=1 where id=1');
系统会自动把__TABLE__替换成当前模型对应的数据表名称,实际的数据表由模型决定。
通常来说,我们都是使用原生SQL操作实现一些ORM和CURD比较难实现的操作,
另外,如果SQL不复杂的话 原生SQL的效率和连贯操作的效率差别是微乎其微的,TP本身的ORM实现也是相当高效的。

最新文章

  1. html中返回上一页的各种写法【转】
  2. 制作圆角:《CSS3 Border-radius》
  3. 数位dp-POJ-3252-Round Numbers
  4. 20160507-hibernate入门
  5. openstack私有云布署实践【8.1 身份认证keystone的API创建(科兴环境)】
  6. 在iOS应用程序中使用Frida绕过越狱检测
  7. linux下mysql启动出错
  8. java 学习第二天小练习
  9. JS获取当前周
  10. 腾讯优秀 SDK 汇总
  11. [leetcode]984. 不含 AAA 或 BBB 的字符串
  12. 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串
  13. systemd管理服务
  14. LeetCode——Combination Sum II
  15. Yosimite 系统 “发生意外错误(错误代码-50)” (记一次macbook pro(mid2012) 自主维修排错经历)
  16. sprint2(第九天)
  17. [Firebase] 1. AngularFire, $save, $add and $remove, Forge
  18. ubuntu 12.0.4 下python3.x web环境搭建
  19. H5游戏开发:贪吃蛇
  20. Tiny4412 Uboot

热门文章

  1. oracle的日期相减
  2. sublime--将vue代码进行高亮显示
  3. 这个代码给所有带有name属性的链接加了一个背景色
  4. 天梯赛 大区赛 L3-014.周游世界 (Dijkstra)
  5. 推荐系统之最小二乘法ALS的Spark实现
  6. 使用Homebrew在Mac OS X EI Capitan上安装与配置nginx和PHP
  7. ICMP报文
  8. Unity-反编译由IL生成的DLL文件
  9. java 泛型没有协变类型, 所以要重用extends, 但使用List<? extends Fruit> 可以是ArrayList<Fruit>()、ArrayList<Apple>()、ArrayList<Orange>(), 因此不能add元素进去
  10. Bug笔记:Google Map第一次缩放位置偏移