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

 更新时间:2017年06月28日 09:32:08   作者:随风飘扬5566  
这篇文章主要介绍了Symfony2针对输入时间进行查询的方法,结合实例形式分析了Symfony2针对mysql及MongoDB的输入时间进行转换与查询的相关操作技巧,需要的朋友可以参考下

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Symfony框架入门教程》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

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

相关文章

  • PHP大文件分割上传 PHP分片上传

    PHP大文件分割上传 PHP分片上传

    这篇文章主要为大家详细介绍了PHP大文件分割上传,PHP分片上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • php生成静态页面的简单示例

    php生成静态页面的简单示例

    这篇文章主要介绍了php生成静态页面的简单示例,需要的朋友可以参考下
    2014-04-04
  • PHP本地进行API接口测试的实例

    PHP本地进行API接口测试的实例

    下面小编就为大家分享一篇PHP本地进行API接口测试的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 基于Laravel实现的用户动态模块开发

    基于Laravel实现的用户动态模块开发

    这篇文章主要给大家介绍了关于基于Laravel实现的用户动态模块开发的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • PHP中使用smarty生成静态文件的例子

    PHP中使用smarty生成静态文件的例子

    这篇文章主要介绍了PHP中使用smarty生成静态文件的例子,需要的朋友可以参考下
    2014-04-04
  • laravel 如何实现引入自己的函数或类库

    laravel 如何实现引入自己的函数或类库

    laravel 如何实现引入自己的函数或类库?今天小编就为大家解答一下在laravel中引入自己的函数或类库的方法,分享给大家,给大家做个参考,一起过来看看吧
    2019-10-10
  • 详解在YII2框架中使用UEditor编辑器发布文章

    详解在YII2框架中使用UEditor编辑器发布文章

    这篇文章主要介绍了在YII2框架中使用UEditor编辑器发布文章,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Yii 实现数据加密和解密的示例代码

    Yii 实现数据加密和解密的示例代码

    这篇文章主要介绍了Yii 实现数据加密和解密的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 使用gd库实现php服务端图片裁剪和生成缩略图功能分享

    使用gd库实现php服务端图片裁剪和生成缩略图功能分享

    一般用户上传头像时,都会让用户自行裁剪图片。那么php怎么实现这个功能呢?php中裁剪图片主要使用gd库的imagecopyresampled方法
    2013-12-12
  • php函数mkdir实现递归创建层级目录

    php函数mkdir实现递归创建层级目录

    当我们想在自己的站点中添加多级目录时,可以运用php函数mkdir()来实现这个功能。具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-10-10

最新评论