Symfony2针对输入时间进行查询的方法分析


Posted in PHP onJune 28, 2017

本文实例讲述了Symfony2针对输入时间进行查询的方法。分享给大家供大家参考,具体如下:

一般情况下:前端输入一个时间,我们一般是先将时间修改成一个时间戳

strtotime — 将任何英文文本的日期时间描述解析为 Unix 时间戳

例如:

$startTimestamp = strtotime($startDate);
$endTimestamp = strtotime($endDate);

然后:如果只是时间,为防止别人传的时间是造假,需要将时间都修改成Y-m-d的形式

$start = date('Y-m-d 00:00:00', $startTimestamp);
$end = date('Y-m-d 23:59:59', $endTimestamp);

1. 在MySQL中的使用

if(empty($startDate)) {
  throw new \Exception('起始时间不为空', BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
if (empty($endDate)) {
  $endDate = $startDate;
}
$startTimestamp = strtotime($startDate);
$endTimestamp = strtotime($endDate);
if ($startTimestamp > $endTimestamp) {
  throw new \Exception('时间参数错误', BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
if ($status == InventoryOrder::STATUS_SUBMITTED) {
  $index = 'i.submitTime';
} else if ($status == InventoryOrder::STATUS_UNSUBMITTED) {
  $index = 'i.createTime';
} else if (empty($status)) {
  $index = 'i.createTime';
} else {
  throw new \Exception('时间格式不正确', BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
$sql = 'SELECT i FROM AppBundle:InventoryOrder i WHERE ';
$sql .= $index;
$sql .= ' BETWEEN :startDate AND :endDate ';
$start = date('Y-m-d 00:00:00', $startTimestamp);
$end = date('Y-m-d 23:59:59', $endTimestamp);
$params['endDate'] = $end;
$params['startDate'] = $start;
if (!empty($status)) {
  $sql .= ' AND i.status = :status';
  $params['status'] = $status;
}
$sql .=' ORDER By i.createTime DESC';
$query = $this->entityManager->createQuery($sql);
$orderList = $query->setParameters($params)->getResult();

2. 在mongodb中的时间的输入和查询列子

在这里面其实有两个坑:

@ ->field('submit_time')->gt(new \DateTime($start))
->field('submit_time')->lt(new \DateTime($end))

这里面,对于时间的查询,大于和小于,一定要传一个对象。

$query->field('status')->equals($status);

这里面,在mongodb里面不会默认帮你识别这是一个int型,是什么类型,必须手动的传入。

$data = array();
if (!isset($startDate)) {
  throw new \Exception("参数不正确", BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
if (empty($endDate)) {
  $endDate = $startDate;
}
$startTimestamp = strtotime($startDate);
$endTimestamp = strtotime($endDate);
if ($startTimestamp > $endTimestamp) {
  throw new \Exception("参数不正确", BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
$start = date('Y-m-d 00:00:00', $startTimestamp);
$end = date('Y-m-d 23:59:59', $endTimestamp);
$scanner = Order::FROM_TYPE_SCANNER;
$query = $this->documentManager
  ->createQueryBuilder('AppBundle:Order')
  ->field('submit_time')->gt(new \DateTime($start))
  ->field('submit_time')->lt(new \DateTime($end))
  ->field('from_type')->equals("$scanner");
if (!empty($status) && in_array($status, array(Order::STATUS_CANCELLED, Order::STATUS_SUBMITTED))) {
  $status = $status + 0;
  $query->field('status')->equals($status);
} else if (empty($status)) {
  $status = Order::STATUS_SUBMITTED + 0;
  $query->field('status')->equals($status);
} else {
  throw new \Exception("参数不正确", BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
$orderList = $query->sort('create_time', 'DESC')
  ->getQuery()
  ->execute();

希望本文所述对大家基于Symfony2框架的PHP程序设计有所帮助。

PHP 相关文章推荐
抓取YAHOO股票报价的类
May 15 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
php UBB 解析实现代码
Nov 27 PHP
web目录下不应该存在多余的程序(安全考虑)
May 09 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
基于php在各种web服务器的运行模式详解
Jun 03 PHP
PHP eval函数使用介绍
Dec 08 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
一个实用的php验证码类
Jul 06 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
Jan 16 PHP
Symfony查询方法实例小结
Jun 28 #PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 #PHP
YII2自动登录Cookie总是失效的解决方法
Jun 28 #PHP
php的常量和变量实例详解
Jun 27 #PHP
Zend Framework框架中实现Ajax的方法示例
Jun 27 #PHP
PHP用continue跳过本次循环中剩余代码的注意点
Jun 27 #PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 #PHP
You might like
PHP 裁剪图片成固定大小代码方法
2009/09/09 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
跟老齐学Python之Import 模块
2014/10/13 Python
跟老齐学Python之折腾一下目录
2014/10/24 Python
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
详解python中asyncio模块
2018/03/03 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
Python----数据预处理代码实例
2019/03/20 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
物业管理大学生个人的自我评价
2013/10/10 职场文书
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
大客户销售经理职责
2013/12/04 职场文书
策划总监岗位职责
2014/02/16 职场文书
意向书范文
2014/03/31 职场文书
环保宣传标语
2014/06/12 职场文书
医院标语大全
2014/06/23 职场文书
师范生见习报告
2014/10/31 职场文书
2014年德育工作总结
2014/11/20 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
回复函范文
2015/07/14 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python