zoukankan      html  css  js  c++  java
  • 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 appindexcontroller;
    
    use appindexmodelUserModel;
    
    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 appindexmodel;
    use appcommonmodelCommonModel;
    use thinkDb;
    use thinkModel;
    
    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

  • 相关阅读:
    webpack—从零开始配置
    多媒体标签 API(video、audio)
    node 爬虫
    node 操作数据库
    es6+
    UI 组件库 引入使用的问题
    单页应用存在 的问题
    ajax 封装(集中 认证、错误、请求loading处理)
    moment.js 时间库
    文件上传大小被限制的解决方案。
  • 原文地址:https://www.cnblogs.com/widgetbox/p/9110783.html
Copyright © 2011-2022 走看看