首页 > 编程语言 >thinkphp6----where查询

thinkphp6----where查询

时间:2024-08-09 09:16:59浏览次数:7  
标签:Db 查询 ---- user thinkphp6 where think select

几种常见的where查询:

1、关联数组查询

$where = [ 'user_id'=>1, 'phone'=>'18311010011', 'is_delete'=>1 ]; 
$result = Db::name('user_card')->where($where)->select();

2、索引数组查询

$where = [
    ['id','=', 253],
    ['is_delete','>=', 1],
    ['phone','like', '%186%'],
    ['sex','<>', '女'],
    ['create_time','between',['2020-05-12','2022-01-11']],
];
$result = Db::name('user_card')->where($where)->whereNotNull('birthday')->select(); 

null 和not null 不能放在where索引数组总查询,会变成比较字符串。

解决方法:用链式函数 ->whereNotNull('birthday') 或者 whereNull(birthday)

$where = [ ['birthday','=','not null'] ];
$result = Db::name('user_card')->where($where)->select();

3、字符串查询:

Db::table('think_user')->whereRaw('type=1 AND status=1')->select();

4、多字段相同条件查询

Db::table('think_user')
->where('name|title','like','thinkphp%')
->where('create_time&update_time','>',0)
->find();

生成的SQL:

SELECT * FROM `think_user` 
WHERE ( `name` LIKE 'thinkphp%' OR `title` LIKE 'thinkphp%' )
AND ( `create_time` > 0 AND `update_time` > 0 ) LIMIT 1

5、适用场景查询

a、where(C)->whereOR([A,B])  A和B是OR的关系,但是要和C是AND的关系

如果是这样写:

Db::table('think_user')->where(['is_delete' => 1])->whereOr($where)->select();

这样写,查询出来的就是错的,相当于只有第一个条件。

解决这个就需要用到闭包查询:

Db::table('think_user')
->where(['is_delete' => 1])
->where(function($query) use ($where){
    $query->whereOr($where);
})
->select();

生成的SQL:

SELECT * FROM `un2co_user_card` WHERE `is_delete` = 1 AND ( `nickname` = '白小白' OR `phone` = '18606995547' )

还可以使用字符串查询:

Db::table('think_user')
->where(['is_delete' => 1])
->whereRaw("nickname='白小白' OR phone='183144444444'")
->select();

打完收工!

标签:Db,查询,----,user,thinkphp6,where,think,select
From: https://www.cnblogs.com/e0yu/p/18350142

相关文章

  • P3398 仓鼠找 sugar
    题意判断树上两条路径是否相交。思路可以根据距离进行判断。如果\(dis(u,v)=dis(lca(g,t),u)+dis(lca(g,t),v)\),说明\(g\)和\(t\)的\(lca\)在\(u\)到\(v\)的路径上,两条路径相交。如果\(dis(g,t)=dis(lca(u,v),g)+dis(lca(u,v),t)\),说明\(u\)......
  • C++ 禁用类的拷贝构造函数和赋值运算符
    C++中如果没有显式定义类的构造函数和赋值运算符,编译器会自动生成对应的函数,但是对于一些含有指针成员变量的类,自动生成的成员函数只会进行浅拷贝,会导致动态申请的内存在对象析构的时候doublefree,引起崩溃的问题。因此如果没有必要,通常会禁用该接口,避免用户调用该接口造成问题。......
  • 保障速度与安全合规的前提下,如何传文件到国外?
    伴随着经济全球化,数据跨境活动日益频繁,数据出境场景越来越多,防范数据出境安全风险,保障数据依法有序自由流动成为我国关注的重要方面。涉及数据出海的行业多种多样,像跨国运营、全球研发、金融服务等领域的企业都涉及传文件到国外,将数据资源、业务或技术应用扩展到海外市场,以支持其......
  • 使用Python和Flask框架实现简单的RESTful API
    目录环境准备创建Flask应用运行Flask应用测试API注意事项在当今的Web开发领域,RESTfulAPI因其简洁性和高效性而备受欢迎。本文将引导你使用Python的Flask框架来创建一个简单的RESTfulAPI,用于增删改查(CRUD)用户信息。环境准备在开始之前,请确保你的Python环境中已经安......
  • py的运行速度是py语法简洁的代价吗,还是其他原因 ?
    Python的运行速度相对于一些编译型语言(如C++或Java)来说可能较慢,但这并不完全是Python语法简洁的代价,而是由多种因素共同作用的结果。Python是一种解释型语言,这意味着Python代码在执行前需要先被解释器逐行解释成机器码,然后再由计算机执行。这种逐行解释的方式相比编译型语言(将......
  • Project 2: Tank War
    Project2:TankWarDue:Aug11th(Sunday),2024,23:59Language:C++Note:C++iscompatiblewithCcodes,i.e.youcanwriteCcodesandviewitasC++code.However,abonuswillbegiventothosewhouseObject-OrientedProgramming(OOP)intheirC......
  • nodejs语言,MySQL数据库;springboot的个性化资讯推荐系统66257(免费领源码)计算机毕业设计
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,个性化资讯推荐系统当然也不能排除在外。个性化资讯推荐系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用springboot技术构建的一个管理系统。整......
  • ABC349D题解
    [ABC349D]DivideInterval题解传送门:luogu|atcoder题目简述给定非负整数$l$和$r$($l<r$),令$S(l,r)$表示序列$(l,l+1,\ldots,r-2,r-1)$,其中包含从$l$到$r-1$的所有整数。此外,一个序列被称为“好序列”,当且仅当它可以表示为$S(2^ij,2^{i}(j+1))$,其中$i$和$j$......
  • c#语言,SQL server数据库;基于Web的社区人员管理系统的设计与实现36303(免费领源码)计算机
    目 录摘要1绪论1.1慨述1.2课题意义1.3B/S体系结构介绍1.4ASP.NET框架介绍2 社区人员管理系统分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数据修改流程52.2.3数据删除流程52.3系统功能分析62.3.1功能性分析62.3.2非功能性......
  • Econ 312: Modeling Project
    Econ312:ModelingProjectGeneralInstructionsTheModelingprojectforthiscourseisintendedtogiveyouhandsonexperiencetoconstructaneconometricmodelforareal-worldproblem.Youmustkeepacopyofthisprojecttoshowyourprospectiveem......