yii2:多条件多where条件下碰到between时,between语句如何处理呢?
yii2:多条件多where条件下碰到between时,between语句如何处理呢?
我有一张表:
id,name,telphone,ticket_no,status,create_time等字段,
在出具多条件查询时(当不涉及到时间范围或其他范围),可以用如下语句:
if (!empty($params['id'])) {
$where_condition['oid'] = $params['id'];
}
if (!empty($params['post_name'])) {
$where_condition['post_name'] = $params['post_name'];
}
if (!empty($params['telephone'])) {
$where_condition['telephone'] = $params['telephone'];
}
if (!empty($params['ticket_no'])) {
$where_condition['ticket_no'] = $params['ticket_no'];
}
if ($params['status'] != -1) {
$where_condition['status'] = $params['status'];
}
$where_condition['delete_flg'] = 0;
$count = static::find()
->where($where_condition)
->andFilterWhere(['between','CREATE_TIME',$start_date, $end_date])
->count();
当涉及到create_time时间范围查询时,那么问题来了,between怎么加进去?$where_condition['CREATE_TIME']='between 时间1 and 时间2' 这样是不行的,花了一点时间查询了下,yii2有这样的方法:andFilterWhere,使用方法如下:
->andFilterWhere(['like1', 'name', '%a%']) #当参数1,参数2为空时,between方法会自动过滤掉,也就是此条件会被删除不执行
->andFilterWhere(['between', 'created_at', 0(参数1), 1433088000(参数2)])
andFilterWhere使用说明:
当 WHERE 条件来自于用户的输入时,你通常需要忽略用户输入的空值。 例如,在一个可以通过用户名或者邮箱搜索的表单当中,用户名或者邮箱 输入框没有输入任何东西,这种情况下你想要忽略掉对应的搜索条件, 那么你就可以使用 yii\db\Query::filterWhere() 方法来实现这个目的:
// $username 和 $email 来自于用户的输入$query->filterWhere([
'username' => $username,
'email' => $email,
]);
具体代码如下:
if (!empty($params['id'])) {
$where_condition['oid'] = $params['id'];
}
if (!empty($params['post_name'])) {
$where_condition['post_name'] = $params['post_name'];
}
if (!empty($params['telephone'])) {
$where_condition['telephone'] = $params['telephone'];
}
if (!empty($params['ticket_no'])) {
$where_condition['ticket_no'] = $params['ticket_no'];
}
if ($params['status'] != -1) {
$where_condition['status'] = $params['status'];
}
$start_date = $end_date = '';
if($params['isSearch'] == 1) {
if (!empty($params['start_date']) && !empty($params['end_date'])) {
$start_date = strtotime($params['start_date']);
$end_date = strtotime($params['end_date']) + 86400 - 1;
}
}
$where_condition['delete_flg'] = 0;
$count = static::find()
->where($where_condition)
->andFilterWhere(['between','CREATE_TIME',$start_date, $end_date])
->count();
yii2:多条件多where条件下碰到between时,between语句如何处理呢?的更多相关文章
- jqgrid 表格中筛选条件的多选下拉,树形下拉 ;文本框清除插件;高级查询多条件动态筛选插件[自主开发]
/** * @@desc 文本框清除按钮,如果isAutoWrap为false当前文本框父级必须是relative定位,boostrap参考input-group * @@author Bear.Ti ...
- 支持向量机(SVM)必备概念(凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件、KKT条件)
SVM目前被认为是最好的现成的分类器,SVM整个原理的推导过程也很是复杂啊,其中涉及到很多概念,如:凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件.KKT条件还有 ...
- 在Bootstrap开发框架中使用bootstrapTable表格插件和jstree树形列表插件时候,对树列表条件和查询条件的处理
在我Boostrap框架中,很多地方需要使用bootstrapTable表格插件和jstree树形列表插件来共同构建一个比较常见的查询界面,bootstrapTable表格插件主要用来实现数据的分页和 ...
- 第一天 格式化操作符 条件、for、while、break、continue语句
python2和3的区别: 2中的print 不必加括号 3中的print变为函数 要加括号 2中的input不能输入字母(输入的字母被认为是变量,而之前又没定义,所以报错),默认只能计算数字,要 ...
- Excel_PoweQuery——条件计数、条件求和
岁月不居,时节如流. 时光荏苒,岁月如梭. 前面两段充分体现了博主深厚的文学素养,别和博主争,博主说啥就是啥. 其实,对于大量数据的处理,这几年微软Office做的不单单是2007的时候把Excel的 ...
- 谈谈raft fig8 —— 迷惑的提交条件和选举条件
谈谈raft fig8 -- 迷惑的提交条件和选举条件 前言 这篇文章的思路其实在两个月前就已经成型了,但由于实习太累了,一直没来得及写出来.大概一个月前在群里和群友争论fig8的一些问题时,发现很多 ...
- 在查询时将查询条件放入Session中,导出时直接根据qpniRGaFiler取查询条件即可
在查询时将查询条件放入Session中,导出时直接根据qpniRGaFiler取查询条件即可
- shell脚本进阶之条件测试与条件语句
接着上篇博客,今天整理一下关于条件测试和条件语句方面的知识. shell脚本进阶之条件测试 在编写shell脚本时,经常需要对一些条件进行判断,可以使用测试命令test辅助完成测试过程.t ...
- PHPlaravel中从数据库中选择数据是增加时间条件及各种条件
注:附加条件后要加get函数. 1.public function getForDataTable($startTime,$endTime){ return $this->query() -&g ...
随机推荐
- <2014 04 29> *nix环境编程常用库总结
-------------------------linux常用头文件如下:POSIX标准定义的头文件<dirent.h> 目录项<fcntl.h> ...
- python迭代器、生成器、yield和xrange
https://blog.csdn.net/u010138758/article/details/56291013
- ios cocos2d 使用 sneakyInput 插件
昨晚看了篇使用sneakyInput插件实现模拟手柄的代码,不过我加上后出现了很多问题.最后只看如何实现,没有自己动手去操作.今天终于吧问题都解决了.记录下来.也供别人参考. 首先要先加入libz.d ...
- Java 面向对象之 static 关键字
static 特点 static 是一个修饰符, 用于修饰成员 static 修饰的成员被所有的对象所共享 static 优先于对象存在, 因为 static 的成员随着类的加载就已经存在了 stat ...
- git 从远程仓库指定分支clone代码到本地
不指定分支 git clone + clone 地址 # 例如 git clone https://amc-msra.visualstudio.com/xxx/_xx/xxxxxx 指定分支 git ...
- 初识Locust---认识
性 能测试工具: 基于Python的性能测试工具-locust 现在性能测试方面有很多测试工具,比如我们熟悉的loadrunner.jmeter.ab等,用过的也就是这几种,如果是学过这些工具的可能对 ...
- 001-前端系列-react系列
一.概述 原文地址:http://www.ruanyifeng.com/blog/2016/09/react-technology-stack.html 二.摘要 ES6 语法:教程 [可以了解] B ...
- java 多线程 day04 线程通信
package com.czbk.thread; /** * Created by chengtao on 17/12/3. * 需求: 子线程先运行10次,然后主线程运行 100次,依次运行50次 ...
- pandas(三)汇总和计算描述统计
pandas对象有一些常用的数学和统计的方法,大部分都属于约简或汇总统计. SUM方法 DataFrame对象的sum方法,返回一个含有列小计的Series >>> df = Dat ...
- 查看Oracle 基表的方法
从 v$fixed_view_definition 视图中可以看到 性能视图所依赖的基表 SELECT view_definition FROM v$fixed_view_definition ...