thinkPHP框架中执行原生SQL语句的方法

thinkPHP框架中执行原生SQL语句的方法

这篇文章主要介绍了thinkPHP框架中执行原生SQL语句的方法,结合实例形式分析了thinkPHP中执行原生SQL语句的相关操作技巧,并简单分析了query与execute方法的使用区别,需要的朋友可以参考下

 

本文实例讲述了thinkPHP框架中执行原生SQL语句的方法。分享给大家供大家参考,具体如下:

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

?
1
2
3
$Model
=
new
Model();
//或者 $Model = D(); 或者 $Model = M();
$sql
=
"select * from `order`"
;
$voList
=
$Model
->query(
$sql
);

只是需要new一个空的模型继承Model中的方法。

注意query是查功能,execute是增删改功能

查询和读取属性值的实例:

?
1
2
3
4
5
6
$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很简单,我们甚至不需要实例化任何的模型,例如:

?
1
$Model
=
new
Model();
// 实例化一个空模型

下面的方法是等效的

?
1
2
3
4
$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操作,不受影响,例如:

?
1
2
3
$User
= D(
'User'
);
$User
->query(
'select * from think_user where status=1'
);
$User
->execute(
'update think_user set status=1 where id=1'
);

在这种情况下面,我们可以简化SQL语句的写法,例如:

?
1
2
$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实现也是相当高效的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/113284.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • eclipse、MyEclipse实现批量改动文件编码

    eclipse、MyEclipse实现批量改动文件编码

  • 在Ubuntu中安装Pycharm轻松搞定[通俗易懂]

    在Ubuntu中安装Pycharm轻松搞定[通俗易懂]说到Python代码编辑器,那肯定是Pycharm最好用了,当然还有Vscode、Atom也是很不错的选择,下面请跟着我进行Pycharm的安装。下载安装包首先必须访问Jetbrains官方网站下载Linux的安装包Pycharm下载地址本文对应Pycharm版本为pycharm-community-2020.2.2点击Download后下载文件名为pycharm-community-2020.2.2.tar.gz解压安装快捷键Ctrl+Alt+T启动终端进入

  • 存算一体——后摩尔时代的AI芯片架构[通俗易懂]

    存算一体——后摩尔时代的AI芯片架构[通俗易懂]存算一体,或存内计算,是指将传统冯诺依曼架构中以计算为中心的设计,转变为以数据存储为中心的设计,也就是利用存储器对数据进行运算,从而避免数据搬运产生的“存储墙”和“功耗墙”,极大提高数据的并行度和能量效率。这种架构特别适用于要求大算力、低功耗的终端设备,如可穿戴设备、移动设备、智能家居等。1.冯诺依曼架构的局限首先是性能。经典的冯诺依曼架构下,数据的存储和计算是分开的,处理器CPU存储器之间通过数据总线进行数据交换。但由于处理器和存储器的内部结构、工艺和封装不同,二者的性能也存在很大的差.

  • 薄膜电容分类研究_贴片薄膜电容

    薄膜电容分类研究_贴片薄膜电容综述在音频电路设计中,薄膜电容是个常客。它的损耗角非常低,电容值较小,耐压比较大,可以用于耦合、滤波、退耦等场合。在应用中我发现,薄膜电容种类较多,技术参数的关注点与电解电容有所不同,于是查阅了Wiki和各个厂家的Datasheet,在这里做一个总结。薄膜电容总的来说性能很好,但也分很多种类和级别,应用的场合也有所不同。基础知识在Wiki上很详尽,下图展示了薄膜电容的电极/电介…

  • 一文轻松搞懂redis集群原理及搭建与使用

    一文轻松搞懂redis集群原理及搭建与使用

  • 浅谈CMS垃圾收集器与G1收集器

    浅谈CMS垃圾收集器与G1收集器1、CMS收集器  CMS收集器是一种以获取最短回收停顿时间为目标的收集器。基于“标记-清除”算法实现,它的运作过程如下:1)初始标记2)并发标记3)重新标记4)并发清除  初始标记、从新标记这两个步骤仍然需要“stop the world”,初始标记仅仅只是标记一下GC Roots能直接关联到的对象,熟读很快,并发标记阶段就是进行GC Roots Tracing,而重新标…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号