yii2:多条件多where条件下碰到between时,between语句如何处理呢?
如何 处理 语句 条件 where between yii2 碰到
2023-09-14 08:57:52 时间
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();
相关文章
- JavaScript基础修炼(14)——WebRTC在浏览器中如何获得指定格式的PCM数据【华为云分享】
- HTTP Get请求的参数带空格如何处理
- lua正则表达式如何匹配中文
- PS 如何使用抽出滤镜抠人物的头发丝等细节
- Adobe Photoshop CC 2019画板背景色白底如何去掉?
- EasyNVR H5直播流媒体解决方案前端构建之:如何播放自动适配RTMP/HLS直播播放
- IntelliJ IDEA教程之如何clean或者install Maven项目
- 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的
- Self Host模式下的ASP. NET Web API是如何进行请求的监听与处理的?
- [FAQ] uni-app 不支持 v-cloak 情况下如何处理 v-if 页面闪烁问题
- 如何处理SAP Launchpad上tile打不开的问题
- 如何处理resource not found for the segment XXXXX error message
- 如何处理nodejs客户端请求服务器出现的certificate错误
- 如何查询编程语言或者网站里一些特殊符号的unicode编码
- 如何处理word document webservice response中奇怪的xml node
- Eclipse新建项目里没有Web Project应该如何处理
- Java错误消息sun.security.validator.ValidatorException应该如何处理
- 如何处理Docker的错误消息request canceled:Docker代理问题
- 如何处理SAP Launchpad上tile打不开的问题
- 如何处理使用 SAP UI5 消费真实的 OData 服务时遇到的跨域问题
- 如何使用Cordova将SAP Fiori应用打包并安装到Android平台上
- Python之Pypi:Pypi的简介、使用方法(如何将自己的Python项目(自定义程序代码库)发布到PyPI全流程的简介)之详细攻略
- Qt事件过滤器如何使用
- 如何在Pycharm设置ES6语法环境
- 程序员如何赚取睡后收入?
- 魂力真的存在那么该如何提高魂力呢
- 老杨说运维 | 从业二十余年运维老兵,教你如何用低代码处理复杂数据