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语句如何处理呢?的更多相关文章

  1. jqgrid 表格中筛选条件的多选下拉,树形下拉 ;文本框清除插件;高级查询多条件动态筛选插件[自主开发]

    /** * @@desc 文本框清除按钮,如果isAutoWrap为false当前文本框父级必须是relative定位,boostrap参考input-group * @@author Bear.Ti ...

  2. 支持向量机(SVM)必备概念(凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件、KKT条件)

    SVM目前被认为是最好的现成的分类器,SVM整个原理的推导过程也很是复杂啊,其中涉及到很多概念,如:凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件.KKT条件还有 ...

  3. 在Bootstrap开发框架中使用bootstrapTable表格插件和jstree树形列表插件时候,对树列表条件和查询条件的处理

    在我Boostrap框架中,很多地方需要使用bootstrapTable表格插件和jstree树形列表插件来共同构建一个比较常见的查询界面,bootstrapTable表格插件主要用来实现数据的分页和 ...

  4. 第一天 格式化操作符 条件、for、while、break、continue语句

    python2和3的区别: 2中的print 不必加括号 3中的print变为函数 要加括号   2中的input不能输入字母(输入的字母被认为是变量,而之前又没定义,所以报错),默认只能计算数字,要 ...

  5. Excel_PoweQuery——条件计数、条件求和

    岁月不居,时节如流. 时光荏苒,岁月如梭. 前面两段充分体现了博主深厚的文学素养,别和博主争,博主说啥就是啥. 其实,对于大量数据的处理,这几年微软Office做的不单单是2007的时候把Excel的 ...

  6. 谈谈raft fig8 —— 迷惑的提交条件和选举条件

    谈谈raft fig8 -- 迷惑的提交条件和选举条件 前言 这篇文章的思路其实在两个月前就已经成型了,但由于实习太累了,一直没来得及写出来.大概一个月前在群里和群友争论fig8的一些问题时,发现很多 ...

  7. 在查询时将查询条件放入Session中,导出时直接根据qpniRGaFiler取查询条件即可

    在查询时将查询条件放入Session中,导出时直接根据qpniRGaFiler取查询条件即可

  8. shell脚本进阶之条件测试与条件语句

       接着上篇博客,今天整理一下关于条件测试和条件语句方面的知识. shell脚本进阶之条件测试    在编写shell脚本时,经常需要对一些条件进行判断,可以使用测试命令test辅助完成测试过程.t ...

  9. PHPlaravel中从数据库中选择数据是增加时间条件及各种条件

    注:附加条件后要加get函数. 1.public function getForDataTable($startTime,$endTime){ return $this->query() -&g ...

随机推荐

  1. [荐][转]为何应该使用 MacOS X(论GUI环境下开发人员对软件的配置与重用)

    一周前我和 Tinyfool 闲聊苹果操作系统,都认为对于开发人员来说,苹果操作系统(MacOS)是上佳的选择.Tinyfool 笔头很快,当即就写了一篇长文章,我则笔头很慢,今天才全部码好.他的文章 ...

  2. 2015-04-14——css3 @media

    //判断横竖屏 @media screen and (min-aspect-ratio: 13/13) { body {background-color:red;}}  //屏幕宽高比,必须是除数形式 ...

  3. paper reading:gaze tracking

    https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Krafka_Eye_Tracking_for_CVPR_2016_ ...

  4. Redis与Memcached的比较(转)

    原文:http://blog.nosqlfan.com/html/3729.html 这两年Redis火得可以,Redis也常常被当作Memcached的挑战者被提到桌面上来.关于Redis与Memc ...

  5. MongoDB-5: 查询(游标操作、游标信息)

    一.简介 db.collection.find()可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段.并返回到匹配文档的游标,可以随意修改查询限制.跳跃.和排序顺序的 ...

  6. django--mysql设置

    mysql基本配置 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', 'PORT': 3306, 'USE ...

  7. 我的Android进阶之旅------>Android Studio使用statistics插件统计项目代码总行数

    今天公司说要统计一下项目总共了多少行代码,于是上网看了一下使用statistic插件可以统计代码总行数,下面给大家分享一下 ! 1.下载[statistic]插件 首先当然要把名为[statistic ...

  8. 【零基础学习iOS开发】【02-C语言】08-基本运算

    一.算术运算符 算术运算符很地简单.就是小学数学里面的一些加减乘除操作.只是呢.还是有一些语法细节须要注意的. 1.加法运算符 + 1 int a = 10; 2 3 int b = a + 5; 在 ...

  9. Pantone色卡——安全装备的面板、丝印及铭牌颜色设计参考

    可以参考上传文件<Pantone色卡电子版下载>

  10. Python Static Method

    How to define a static method in Python?Demo: #!/usr/bin/python2.7 #coding:utf-8 # FileName: test.py ...