ThinkPHP6.0 链式SQL语句
ThinkPHP6.0 链式SQL语句
查询单个数据
$user = Db::query('select * from `user`');
$user=Db::table('user')->where('UserID',1001)->find();//查询结果为空 返回 null
$user=Db::table('user')->where('UserID',1001)->findOrEmpty();//查询结果为空 返回 空数组
查询结果集(查询结果返回多条数据的意思)
$user=Db::table('user')->where('UserID',1001)->select();
$user=Db::table('user')->where('UserID', 1001)->select()->toArray();
查询一个字段
$user=Db::table('user')->where('UserID',1002)->value('UserName');//只能返回一条数据
查询一列
$user=Db::table('user')->where('Password',123456)->column('UserName');//可以返回多条数据
添加数据
$data=['UserID'=>'1005','UserName'=>'Season','Password'=>'123456'];
Db::name('user')->insert($data);
修改数据
DB::table('user')->where('UserID',1005)->update(['Password'=>123]);
删除数据
根据主键删除
Db::table('user')->delete([1002,1003]);
条件删除
Db::table('user')->where('Password',123)->delete();
查询数据
格式 where('字段名','查询表达式','查询条件');
$user=Db::table('user')->where("UserID","=",1001)->select();
模糊查询
$user=Db::table('user')->where('UserName','like','s%')->select();
区间查询
$user=Db::table('user')->where('UserID','between','1001,1003')->select();
IN查询
$user=Db::table('user')->where('UserID','in',[1001,1003])->select();
Not Null
$user=Db::table('user')->where('Password','not null')->select();
Null
$user=Db::table('user')->where('Password',null)->select();
链式操作示例
$user=Db::table('user')->where('Password',123456)->order('UserName')->select();
field操作(输出选择的字段名的数据)
$user=Db::table('user')->field('UserID,UserName')->select();
链式alias操作,设置表的名称(为了方便后面内容的书写)
$user=Db::table('user')->alias('a')->where('a.UserID',1001)->select();
limit 操作
$user=Db::table('user')->limit(2)->select();
page操作
$user=Db::table('user')->page(2,5)->select();
order操作,默认asc
$user=Db::table('user')->order('UserID')->select();
$user=Db::table('user')->order('UserID','desc')->select();
group 操作
$user=Db::table('user')->alias('u')->field('u.Status,SUM(u.Price)')->group('u.Status')->select();
having操作
$user=Db::table('user')->alias('u')->field('u.Status,SUM(u.Price)')->group('u.Status')->having('u.Status>0')->select();
join操作
INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
Transaction(自动):当函数内的sql语句出现错误了,则函数内的sql语句都不执行
Db::Transaction(function (){
Db::name('user')->where('UserID',1001)->save(['Price'=>Db::raw('Price-3')]);
Db::name('user')->where('UserID',1002)->save(['Price'=>Db::raw('Price+3')]);
});
startTrans(手动):当sql语句出现错误了,则sql语句都不执行
Db::startTrans();
try {
Db::name('user')->where('UserID',1001)->save(['Price'=>Db::raw('Price-3')]);
Db::name('user')->where('UserID',1002)->save(['Price'=>Db::raw('Price+3')]);
Db::commit();//提交事务
}catch (\Exception $e){
echo '执行SQL失败,开始回滚数据';
Db::rollback();
}
获取器:$value 所有字段名是“UserName”的数据 $data所有数据
$user=Db::name('user')->withAttr('UserName',function ($value,$data){
var_dump($value);
var_dump($data);
})->select();;
ThinkPHP6.0 链式SQL语句的更多相关文章
- Rxjava2.0 链式请求异常处理
使用Rxjava2.0的过程中,难免会遇到链式请求,而链式请求一般都是第一个抛异常,那么后面的请求都是不会走的.现在来讨论一下链式请求的一种异常处理方法.例如: 一个登录-->通过登录返回的to ...
- mysqls,为node.js而编写的sql语句生成插件 (crud for mysql).
It is written in JavaScript,crud for mysql.You can also use transactions very easily. mysqls 一款专为nod ...
- orm分组,聚合查询,执行原生sql语句
from django.db.models import Avg from app01 import models annotate:(聚合查询) ret=models.Article.objects ...
- MySQL中的基本SQL语句
标准SQL包含了4种基本的语句类别: DDL语句,数据定义语句,主要用来定义数据库,表名,字段,例如create,drop,alter. DML语句,数据操作语句,用来对数据记录的增删改查,还用来保证 ...
- 参数化SQL语句
避免SQL注入的方法有两种:一是所有的SQL语句都存放在存储过程中,这样不但可以避免SQL注入,还能提高一些性能,并且存储过程可以由专门的数据库管理员(DBA)编写和集中管理,不过这种做法有时候针对相 ...
- 一条SQL语句求前面记录的平均值
有算法要求如下: For (i=1,i<=10,i++) { ta[i] = (t[1] + t[2] + ... + t[i]) / i; } 用一条SQL语句实现它: 分别用表变量 @ta ...
- Entity Framework 在MySQL中执行SQL语句,关于参数问题
在Entity Framework中添加MySQL模型,在写代码的过程中需要直接执行SQL语句. 在SQL语句中用到了@curRank := 0 这样在SQL语句中定义参数,同时还会有传入参数:ai. ...
- 解决Mysql搭建成功后执行sql语句报错以及区分大小写问题
刚搭建完mysql 8.0以后会: 一.表区分大小写, 二.执行正确的sql语句成功且会报:[Err] 1055 - Expression #1 of ORDER BY clause is not i ...
- sql的行转列(PIVOT)与列转行(UNPIVOT) webapi 跨域问题 Dapper 链式查询 扩展 T4 代码生成 Demo (抽奖程序)
sql的行转列(PIVOT)与列转行(UNPIVOT) 在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比 ...
- 事务控制语句,begin,rollback,savepoint,隐式提交的SQL语句
事务控制语句 在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作.因此开始一个事务,必须使用BEGIN.START TRANSACTION,或者执行SE ...
随机推荐
- [Shell] Windows上支持Linux Shell的工具/方法
0 概述 1 方式一 : Windows Terminal 局限性: 不支持 xargs等命令 支持sed,find等命令 安装方式 安装Windows Terminal的最简单方法是通过Micros ...
- [网络]内网IP的判别与分类
1 内网IP划分 内网IP地址分为A类.B类和C类,其地址范围如下: A类地址: 10.0.0.0 - 10.255.255.255 B类地址: 172.16.0.0 - 172.31.255.255 ...
- [IDE]IDEA build artifacts过程很慢的解决方案[转载]
解决方案 可能1 可能是缓存的文件太多了导致: File->Invalidate Caches /Restart,清理缓存, 并重启IDEA.重启之后,会重建索引, 此过程较慢, 但build的 ...
- TS 导入导出那些事
前言 最近用 TypeScript 写 npm 包,各种模块.命名空间.全局定义等等扰得我睡不着觉. 我便苦心研究,总结了几个比较冷门的,国内貌似基本上找不到资料的导入导出用法,顺便在其中又插入一些不 ...
- RESTful API 为何成为顶流 API 架构风格?
作者孙毅,API7.ai 技术工程师,Apache APISIX Committer 万物互联的世界充满着各式各样的 API ,如何统筹规范 API 至关重要.RESTful API 是目前世界上最流 ...
- pygame:简易游戏(飞机大战)
import math import random import pygame import sys # pygame初始化 pygame.init() # 得分初始化 score = 0 # 创建s ...
- [Pytorch框架] 1.7 数据并行
数据并行(选读) Authors: Sung Kim and Jenny Kang 在这个教程里,我们将学习如何使用 DataParallel 来使用多GPU. PyTorch非常容易就可以使用多GP ...
- 如何在SpringBoot项目中兼容Jersey和SpringMVC框架?
文章目录 Jersey框架介绍 常用的注解: SpringBoot中SpringMVC兼容Jersey 整合Jersey REST(Representational State Transfer)表象 ...
- I-o-C 一篇概览
一.ioC 容器和 Bean介绍 IoC(Inversion of Control )也被称之为 DI(dependency injection),名称侧重点略有不同. 所谓控制翻转即对象通过构造函数 ...
- docker常用命令之帮助启动类命令和镜像命令
docker安装之后,启动时会报如下错误: Job for docker.service failed because start of the service was attempted too o ...