Thinkphp5.0对数据库的操作方法有哪些

Thinkphp5.0对数据库的操作方法有哪些

基本使用

查询操作

Db::query('select * from think_user where id=?',[8]);

写入操作

Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);

查询构造器

查询数据

find 返回一条记录,返回的结果是一个一维数组 如果结果不存在,返回NULL

Db::table('think_user')->where('id',1)->find();

select 返回所有记录,返回的结果是一个二维数组 如果结果不存在,返回一个空数组

Db::table('think_user')->where('status',1)->select();

助手函数

系统提供了一个db助手函数,可以更方便的查询:

db('user')->where('id',1)->find();db('user')->where('status',1)->select();

注意:使用db助手函数默认每次都会重新连接数据库,而使用Db::name或者Db::table方法的话都是单例的。db函数如果需要采用相同的链接,可以传入第三个参数,例如

db('user',[],false)->where('id',1)->find();db('user',[],false)->where('status',1)->select();

添加数据

使用 Db 类的 insert 方法向数据库提交数据

$data = ['foo' => 'bar', 'bar' => 'foo'];Db::table('think_user')->insert($data);

添加多条数据

添加多条数据直接向 Db 类的 insertAll 方法传入需要添加的数据即可

$data = [    ['foo' => 'bar', 'bar' => 'foo'],    ['foo' => 'bar1', 'bar' => 'foo1'],    ['foo' => 'bar2', 'bar' => 'foo2']];Db::name('user')->insertAll($data);

insertAll 方法添加数据成功返回添加成功的条数

助手函数

// 添加单条数据db('user')->insert($data);// 添加多条数据db('user')->insertAll($list);

更新数据

update 方法返回影响数据的条数,没修改任何数据返回 0

Db::table('think_user')->where('id', 1)->update(['name' => 'thinkphp']);

更新某个字段的值: setField 方法返回影响数据的条数,没修改任何数据字段返回 0

Db::table('think_user')->where('id',1)->setField('name', 'thinkphp');
自增或自减一个字段的值// score 字段加 1Db::table('think_user')->where('id', 1)->setInc('score');// score 字段加 5Db::table('think_user')->where('id', 1)->setInc('score', 5);// score 字段减 1Db::table('think_user')->where('id', 1)->setDec('score');// score 字段减 5Db::table('think_user')->where('id', 1)->setDec('score', 5);

延迟更新

Db::table('think_user')->where('id', 1)->setInc('score', 1, 10);

删除数据

// 根据主键删除Db::table('think_user')->delete(1);Db::table('think_user')->delete([1,2,3]);// 条件删除    Db::table('think_user')->where('id',1)->delete();Db::table('think_user')->where('id','<',10)->delete();

条件查询方法

where

可以使用where方法进行AND条件查询:

Db::table('think_user')    ->where('name','like','%thinkphp')    ->where('status',1)    ->find();

whereOr方法

Db::table('think_user')    ->where('name','like','%thinkphp')    ->whereOr('title','like','%thinkphp')    ->find();

混合查询

where方法和whereOr方法在复杂的查询条件中经常需要配合一起混合使用,下面举个例子:

$result = Db::table('think_user')->where(function ($query) {    $query->where('id', 1)->whereor('id', 2);})->whereOr(function ($query) {    $query->where('name', 'like', 'think')->whereOr('name', 'like', 'thinkphp');})->select();

查询表达式

查询表达式支持大部分的SQL查询语法,也是ThinkPHP查询语言的精髓,查询表达式的使用格式:

where('字段名','表达式','查询条件');whereOr('字段名','表达式','查询条件');
表达式 含义EQ、= 等于(=)NEQ、<> 不等于(<>)GT、> 大于(>)EGT、>= 大于等于(>=)LT、< 小于(<)ELT、<= 小于等于(<=)LIKE 模糊查询[NOT] BETWEEN (不在)区间查询[NOT] IN (不在)IN 查询[NOT] NULL 查询字段是否(不)是NULL[NOT] EXISTS EXISTS查询EXP 表达式查询,支持SQL语法> time 时间比较< time 时间比较between time 时间比较notbetween time 时间比较

关于“Thinkphp5.0对数据库的操作方法哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Thinkphp5.0对数据库的操作方法有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

文章标题:Thinkphp5.0对数据库的操作方法有哪些,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/29823

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月26日 上午1:47
下一篇 2022年9月26日 上午1:48

相关推荐

  • web文件上传漏洞的示例分析

    文件上传功能模块 文件上传功能是大部分WEB应用的必备功能,网站允许用户自行上传头像、一些社交类网站允许用户上传照片、一些服务类网站需要用户上传证明材料的电子档、电商类网站允许用户上传图片展示商品情况等。然而,看似不起眼的文件上传功能如果没有做好安全防护措施,就存在巨大的安全风险。 文件上传漏洞原理…

    2022年9月22日
    97500
  • vlookup函数怎么匹配两个条件

    vlookup函数匹配两个表格的方法 对比两个表格数据 我们先来看一下这两个表格的数据,为了方便大家查看,小编将两个表格的数据放在了一张图片上 位于左边的是生产计划表的数据,而位于右边的则是库存表的数据。对比两个表格我们可以发现,两个表格中虽然产品品种一样 但是顺序不一样,在数据量少的时候可以通过人…

    2022年9月21日
    81200
  • CDR最新版本透视效果怎么制作

    CDR最新版本透视效果在哪里: 答:在“对象”工具栏下。 点击上方对象,在下拉菜单中就可以找到“透视”了。 CDR最新版本透视制作教程: 1、首先我们使用文本工具添加需要编辑的内容。 2、添加完成后,点击左上角的“对象” 3、然后找到“透视点”,点击其中的“添加透视” 4、添加完成后,就能够获得透视…

    2022年9月24日
    57100
  • 怎么用vue实现动态路由

    1、什么是动态路由? 动态路由,动态即不是写死的,是可变的。我们可以根据自己不同的需求加载不同的路由,做到不同的实现及页面的渲染。动态的路由存储可分为两种,一种是将路由存储到前端。另一种则是将路由存储到数据库。动态路由的使用一般结合角色权限控制一起使用。 总结: 1)路由可变,不是写死的,动态加载 …

    2022年9月15日
    69400
  • Input标签自动校验功能去除怎么实现

    自动校验 注:以下输入框包含input、textarea 事情是这样的,上个星期,接到了一个需求,要求去除掉项目中的输入框的自动拼写检查功能,也就是下图出现的红线,这个检查是浏览器自带的 解决方法 其实是有解决方法的,而且也不难,很简单,只需要在输入框标签上加上一个属性spellcheck=fals…

    2022年9月20日
    70300
  • coreldraw如何填充颜色

    coreldraw填充颜色的方法 1、打开软件选择左侧的矩形工具,在工作区域里画出一个矩形。 2、工具栏里面找到填充工具,选择均匀填充。 3、在均匀填充调色框中选择需要填充的颜色,然后点击“确定”。 4、这样就填充完成了。 关于“coreldraw如何填充颜色”的内容就介绍到这里了,感谢大家的阅读。…

    2022年9月26日
    57900
  • 电脑蓝屏0x00000050如何解决

    解决方法: 方法一: 1、应用程序冲突是较好解决的。 2、首先我们重启电脑,然后在开机时按下键盘“F8”,再选择“疑难解答” 3、接着进入高级选项,在其中找到“启动设置” 4、再按下键盘“F4”,尝试进入安全模式。如果可以进入安全模式应该就是应用程序冲突问题。 5、进入安全模式后,只需要在其中将最近…

    2022年9月18日
    60200
  • 如何实现Weblogic SSRF漏洞复现

    一、使用docker搭建环境 docker安装及搭建环境教程:https://www.freebuf.com/sectool/252257.html 访问7001端口 二、漏洞复现步骤 1、漏洞存在页面 /uddiexplorer/SearchPublicRegistries.jsp 2、检查一下I…

    2022年9月24日
    49300
  • Python如何用NumPy读取和保存点云数据

    前言 最近在学习点云处理的时候用到了Modelnet40数据集,该数据集总共有40个类别,每个样本的点云数据存放在一个TXT文件中,每行的前3个数据代表一个点的xyz坐标。我需要把TXT文件中的每个点读取出来,然后用Open3D进行显示。怎么把数据从TXT文件中读取出来呢?NumPy提供了一个功能非…

    2022年9月2日
    84500
  • Redis常见分布锁的原理是什么和怎么实现

    常见的分布式锁的实现如下图: 基于数据库 悲观锁 悲观锁(Pessimistic Lock)顾名思义为很悲观的锁,每次在拿数据的时候都会上锁。这样别人想拿数据就被挡住,直到悲观锁被释放,悲观锁中的共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程,但是在效率方面,处理加锁的机制…

    2022年8月30日
    48900
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部