微学网

热门关键词:   as  thinkphp  ecshop  xxx  商务通  www.ymwears.cn
热门: ASP.NET PHP编程 ASP编程 JSP编程 Python

TP5 Or查询的几种方法

发布时间:2020-11-14 来源:未知 点击:

在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中更新了很多我们经常用到的查询方式,而且写法更人性化,需要经常的去整理查看这些新方法

或者也可以用$where['custom_name|custom_phone'] = ['like', "%" . $post['keyword'] . '%'];这种方法或查询,如输入关键词模糊查找几个字段如下代码:

$where['land_no'] = 0;
      if ($post['keyword']) {
            $where['custom_name|custom_phone'] = ['like', "%" . $post['keyword'] . '%'];
        }
        $where['custom_id'] = 0;
        $num = db('land')->where($where)->select();


3.采用闭包方式 

  1. tp5中采用闭包的方式:
  2.  
    $map['user_id']=1;
  3.  
    $map['status']=0;
  4.  
    $or_map['user_id']=$map['user_id'];
  5.  
    $or_map['audit']=['in',['1,2']];
  6.  
    $list = Db::name('table')->where(function ($query) use ($map) {
  7.  
                        $query->where($map);
  8.  
                    })->whereOr(function ($query) use ($or_map) {
  9.  
                        $query->where($or_map);
  10.  
                    })->select();
  11.  
    //生成的sql语句:
  12.  
    //SELECT * FROM `tp_table` WHERE  (  `user_id` = '1'  AND `status` = 0 ) OR (  `user_id` = '1'  AND `audit` IN ('1,2') )

 

4.普通方式

  1. $where = [
  2.  
    'feed_uid' => [ 'eq' , 5] ,
  3.  
    'status' => [ [ 'eq' , 1] , [ 'eq' , 2 ] , [ 'eq' , 3 ] , 'or' ] ,
  4.  
    ];
  5.  
    $value = DealSpace::where($where)->count();
  6.  
    //最终的查询条件为where feed_uid=5 and (status=1 or status =2 or status =3 )

这就是微学网-程序员之家为你提供的"TP5 Or查询的几种方法"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/14064.html
网络编程 | 前端制作 | 数据库 | CMS教程 | 脚本编程 | 框架 | 服务器 | 微信开发 | APP开发 | 学习教程 |

凡本网站转载的文章、图片等资料的版权归版权所有人所有,因无法和版权所有者一一联系,如果本网站选取的文/图威胁到您的权益,请您及时和本网站联系。 我们会在第一时间内采取措施,避免给双方造 成不必要的损失。
© 2015-2021 微学网 版权所有,并保留所有权利。 备案号:粤ICP备09051474号-1

菜鸟学习网,提供各类程序编程入门,技巧,手机游戏下载站