当前位置: 首页 > article >正文

thinkphp8模型中 where数组条件大于,小于,like等条件时与tp5/6 的区别和使用示例

tp8模型中的where查询条件为数组且使用大于,小于,like等条件时的使用方式和之前的tp5/6等版本的使用区别如下:

thinkphp8 中的where数组查询条件

大于 >, 小于, like等条件时使用方法:

// 查询user表中id大于2, name以张开头的用户
$user = User::where([['id', '>','2'],['name','like','%'.'张']])->select();

// 最后生成的sql如:
// SELECT * FROM `tms_user` WHERE ( `id` > 2 AND `real_name` LIKE '%张' ) AND `tms_user`.`delete_time` IS NULL

注意这里的where数组条件里面有多个时使用的是二维数组的形式,既 [ [条件1], [条件2] ],

当条件是等于=时,如果是多个,使用  [ ['id', '=','2'] ],  如果只有一个条件/或者条件是等于 则可以只用索引数组, 如: ['id'=>'2', 'real_name'=>'张三' ],  对于这种情况下的where就和tp5,6是一样的了。如下示例:

User::where(['id'=>'2','real_name'=>'张三'])->select();
// SELECT * FROM `tms_user` WHERE ( `id` = 2 AND `real_name` = '张三' ) AND `tms_user`.`delete_time` IS NULL

注意:在thinkphp8中,索引数组的where条件会生成IN的查询条件, 如:where( ['id'=>[1,2,3]] )  最后生成的SQL是  `id` IN (1,2,3) 

thinkphp5/6的where数组条件中大于,小于,like的使用

注意这里的大于,小于,like条件是对某个字段使用条件数组

// 查询user表中id大于2, name以张开头的用户
$user = User::where(['id'=>array('>','2'),'name'=>array('like','%'.'张')])->select();

tp5中的in, not in等查询条件的构建

$whereArr['id'] = array('eq',100);  //  等效于:$map['id'] = 100;
$whereArr['id'] = array('neq',100);  //  id != 100
$whereArr['id'] = array('gt',100); //   id > 100
$whereArr['id'] = array('egt',100); //   id >= 100
$whereArr['id'] = array('lt',100);  //  id < 100
 $whereArr['id'] = array('elt',100); //   id <= 100

$whereArr['id'] = array('in','1,5,8');  //  id in(1,5,8)
$whereArr['id'] = array('not in','1,5,8');   //   id not in(1,5,8)

$whereArr['id'] = array(array('gt',3),array('lt',10), 'or'); //   (id > 3) OR (id < 10)

$whereArr['id'] = array('between','1,8');   // id BETWEEN 1 AND 8

exp    综合表达式 $whereArr['id'] = array('exp','in(1,3,8)');

示例: $res = db('user')->filed(*)->where($whereArr)->select();

where字符串条件和其他情况

字符串条件和其他情况tp8, tp5,6他们的where的构造方式是一样的,如下示例:

where('email', 'like', '%abc%') // email like '%abc%'

where('real_name', '张三')  // real_name='张三'

where('id', 1)  // id=1

只有一个条件时大于,小于,like等的使用tp8,6,5,3他们的使用方法都是一样的,如

where('id','>',10)   // 生成的SQL:    id > 10
 

总结:tp8中的模型where数组条件在大于,小于,like或者有多个条件时使用的是二维数组的方式,而tp5、6中使用的是索引数组+条件数组的形式, 其他的字符串条件和单个条件时的where使用各个版本都是一样的。


http://www.kler.cn/a/378083.html

相关文章:

  • 什么是 OpenTelemetry?
  • 哔哩哔哩车机版2.7.0|专为司机打造的车机版B站,内容丰富,功能齐全
  • 在Mac下安装时间序列软件Hector
  • Fooocus图像生成软件本地部署教程:在Windows上快速上手AI创作
  • Keras 3 示例:开启深度学习之旅
  • 【C++】对左值引用右值引用的深入理解(右值引用与移动语义)
  • 3.3_JavaScript 对象与事件
  • 湖南(市场研究)源点咨询 市场调研公司与咨询公司有何不同?
  • Leetcode 腐烂的橘子
  • docker理论+部署(一)
  • masm汇编debug调试字符串大小写转换演示
  • 职场中这样汇报工作领导才满意
  • Milvus - 相似度量详解
  • HarmonyOS 5.0应用开发——用户文件操作
  • git入门教程9:配置Git钩子
  • 线程数组一例
  • 信息学科平台系统构建:Spring Boot框架深度解析
  • Kubernetes中常见的volumes数据卷
  • BES2600WM---HiLink RM56 EVK
  • 基于yolov5的输电线,电缆检测系统,支持图像检测,视频检测和实时摄像检测功能(pytorch框架,python源码)
  • 视频QoE测量学习笔记(二)
  • Python+pandas读取Excel将表头为键:对应行为值存为字典—再转json
  • el-datepicker此刻按钮点击失效
  • 哈希——哈希表处理哈希冲突的方法
  • Python小游戏20——超级玛丽
  • 微信小程序 - 获取汉字拼音首字母(汉字英文首字母)根据汉字查拼音,实现汉字拼音首字母获取,在小程序上实现汉字的拼音提取首字母!