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 ...
随机推荐
- http://element.eleme.io/#/zh-CN/component/quickstart
http://element.eleme.io/#/zh-CN/component/quickstart
- Vulnerabilities by Type
w http://hackergossips.com/cross-site-scriptingxss-and-preventing/
- MAC OSX--docker
http://www.cnblogs.com/yjmyzz/p/docker-install-tutorial.html http://www.cnblogs.com/yjmyzz/p/docker- ...
- 服务不支持 chkconfig 的解决方法
系统服务,在chkconfig --add servername的时候老是提示服务不支持 chkconfig,经过查找,解决办法如下. 示例,auto_run的前三行如下:#!/bin/sh#chk ...
- vc判断当前用户是否具有administrator 权限代码
BOOL IsAdmin() { HANDLE hAccessToken; BYTE * InfoBuffer = ]; PTOKEN_GROUPS ptgGroups; DWORD dwInfoBu ...
- Andrew Ng机器学习编程作业:Support Vector Machines
作业: machine-learning-ex6 1. 支持向量机(Support Vector Machines) 在这节,我们将使用支持向量机来处理二维数据.通过实验将会帮助我们获得一个直观感受S ...
- 多服务器之间Session共享
原理:多个服务器间想共享session,就相当于共享取多台主机上的一个变量,所以共享的思路就是让大家都能读取变量,实现的方法可以通过将session保存到专门的一个服务器上,所有服务器都去请求数据,也 ...
- java 多线程 day06 threadLocal
import java.util.HashMap;import java.util.Map;import java.util.Random; /** * Created by chengtao on ...
- CAS单点登录实践(spring cas client配置)
前言: 最近的项目需要将多个站点统一登录,查阅了资料Jasig cas(Central Authentication Service)(官方站点:http://www.jasig.org/cas)使用 ...
- Tkprof工具详解一(转载)
在数据库生成的oracle trace文件中,可读性是比较差的,此时可使用tkprof工具来格式化trace文件,tkprof是一个命令行工具,作用就是把原始的跟踪trace文件作为输入,然后格式化一 ...