TP5 多条件whereOr查询

问题背景:最近在用ThinkPHP 5开发项目的过程中,发现根据筛选条件做or查询的时候,连贯操作不可以使用where进行条件查询了。

首先列出一个user数据表的信息:


uid


uname


grade(年级)


class(班级)


sex(性别)


1


1号


1


2


1


2


2号


1


1


2


3


3号


3


3


2


4


4号


4


2


1


5


5号


2


5


1


6


6号


1


6


2


7


7号


1


1


1


8


8号


2


3


1


9


9号


2


2


1


10


10号


3


1


2

数据表展现了10位同学的年级、班级、性别信息

现在要查询数据为

grade=1 or class= or sex=2

在TP3中想要or查询

条件可以为:

$condition[‘grade‘] = 1;

$condition[‘class‘] = 3;

$condition[‘sex‘] = 2;

$condtion[‘_logic‘] = ‘OR‘;

$list = M(‘user’)->where($condtion)->findall();

然后在TP5中尝试用where去这么查询发现一直在报错,查了手册之后发现TP5取消了_logic作为查询方式,而是新增了whereOr方法,下面是TP5中查询方式

User.php

<?php
namespace app\index\controller;

use app\index\model\UserModel;

class User
{
    public function index()
    {
        $condition[‘grade‘] = 1;
        $condition[‘class‘] = 3;
        $condition[‘sex‘] = 2;
        $UserModel = new UserModel;
        $list = $UserModel->getlistwhereOr($condition);

        print_r($list);
    }
}        

UserModel.php

<?php
namespace app\index\model;
use app\common\model\CommonModel;
use think\Db;
use think\Model;

class UserModel extends CommonModel
{
    public function __construct(){
        parent::__construct();

    } 

    protected $name = ‘User‘;

    public function getlistwhereOr($condition) {
        $list =Db::name($this->name)->whereOr($condition)->select();
        return $list;
    }
}

执行User.php 发现打印出来的数据就是我们要的筛选数据,

总结:TP5相比TP3中更新了很多我们经常用到的查询方式,而且写法更人性化,需要经常的去整理查看这些新方法

by as

原文地址:https://www.cnblogs.com/widgetbox/p/9110783.html

时间: 2024-10-07 10:17:31

TP5 多条件whereOr查询的相关文章

Linq to Entity 多条件 OR查询

技术背景:框架MVC,linq to Entity 需要一定的lambda书写能力 问题:在简单的orm中完成一些简单的增删查改是通过where insert delete update 完成的,但是在这个过程中出现了一个需求:多项条件的and 和or 的组合查询 一:简单and 和or 查询 public void TextFoZK() { using (var dbContext = new CRMDbContext()) { //第一句解析出来的sql是 select * from mem

bos 第4 (区域excel批量导入、区域通用分页查询、分区的添加、分区多条件分页查询、分区导出excel)

BOS项目笔记 第4天 今天内容安排: 1.区域批量导入功能 jQuery OCUpload(一键上传插件).apache POI.pinyin4j 2.实现区域的分页查询 3.对分页代码重构 4.添加分区(combobox下拉框) 5.分区的组合条件分页查询 6.分区数据导出功能 1. 区域数据批量导入功能 1.1 一键上传插件使用 ajax不能做文件上传. 第一步:在jsp页面中引入插件的js文件 <script type="text/javascript" src=&quo

使用ArcGIS API for Silverlight 进行复合多条件空间查询

原文:使用ArcGIS API for Silverlight 进行复合多条件空间查询 这两天帮网上认识的一个兄弟做了一个查询的示例,多多少少总结一下,在此和大家分享. 为什么说是复合多条件呢?因为进行空间查询有时候我们查询的条件会很复杂,比如要求某一要素的某一属性大于多少,且小于多少,且又不等于多少等等.而在官网给出的例子中并没有关于复合查询的说明.不过查看API后,你会发现一句很重要的话: A where clause for the query. Any legal SQL where c

thinkphp-where-数组条件-普通查询

语法 Db::table(表名)->where(条件)->select(); 示例 $map['name'] = 'thinkphp'; $map['status'] = 1; // 把查询条件传入查询方法 Db::table('think_user')->where($map)->select(); 对应原始sql SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1

指定查询条件,查询对应的集合List(单表)

TestDao.java(测试类) @Test public void findCollectionByConditionNoPage(){  ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");  IElecTextService elecTextService = (IElecTextService) ac.getBean(IElecTextService.SERVICE_NAME);   

HBase多条件筛选查询方案

最近的项目需要使用Hbase做实时查询,由于Hbase只支持一级索引,也就是使用rowkey作为索引查询,所以对于多条件筛选查询的支持不够,在不建立二级索引的情况下,只能使用Hbase API中提供的各种filter过滤器进行筛选,感觉查询效率不太理想,于是考虑建立二级索引的方案. 经过google学习网上前辈们的经验,暂时找到两种可用的方案: 使用Hbase协处理器Coprocessor在写入数据时,创建二级索引表,并将每条数据的索引写入二级索引表中,查询时先根据筛选条件查询二级索引表,获取相

Entity Framework多表多条件动态查询

方式一  Linq To Entity形式: /// <summary> /// 查询的数据 /// </summary> /// <param name="order">升序asc(默认)还是降序desc</param> /// <param name="sort">排序字段</param> /// <param name="search">查询条件</p

复合条件连接查询

复合条件连接查询是在连接查询的过程中,通过添加过滤条件,限制查询的结果,使查询的结果更加准确 mysql> SELECT customers.c_id, orders.o_num FROM customers INNER JOIN orders ON customers.c_id = orders.c_id AND customers.c_id = 10001; +-------+-------+ | c_id | o_num | # 在连接查询时指定查询客户ID为10001的订单信息,添加了过

zTree初体验--MVC linq动态多条件OR查询

工作需要,使用zTree实现了一个点击显示下拉复选框列表选中项作为查询条件的功能.简单记录下菜鸟级开发历程. zTree:是一个依靠jQuery实现的多功能树控件.通过简单引用配置就可使用. 具体使用: (1).脚本.样式引用 注意:引用顺序,zTree.js一定放最后. <link rel="stylesheet" href="@Url.Content("~/Scripts/jquery.plugins/zTree/zTreeStyle.css")