Symfony2针对输入时间进行查询的方法分析
前端之家收集整理的这篇文章主要介绍了
Symfony2针对输入时间进行查询的方法分析,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_0@本文实例讲述了Symfony2针对输入时间进行查询的方法。分享给大家供大家参考,具体如下:
@H_
404_0@一般情况下:前端输入一个时间,我们一般是先将时间
修改成一个时间戳
@H_
4040@<span style="color: #0000ff">strtotime — 将任何英文文本的日期时间描述解析为 Unix 时间戳
@H404_0@例如:
<div class="jb51code">
<pre class="brush:
PHP;">
$startTimestamp = strtotime($startDate);
$endTimestamp = strtotime($endDate);
@H_
404_0@然后:如果只是时间,为防止别人传的时间是造假,需要将时间都
修改成Y-m-d的形式
PHP;">
$start = date('Y-m-d 00:00:00',$startTimestamp);
$end = date('Y-m-d 23:59:59',$endTimestamp);
@H_
404_0@
$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',$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();
@H_
404_0@
2. 在mongodb中的时间的输入和查询列子
@H_
404_0@在这里面其实有两个坑:
field('submit_time')->gt(new \DateTime($start))
->field('submit_time')->lt(new \DateTime($end))
@H_
404_0@这里面,对于时间的
查询,大于和小于,一定要传一个对象。
field('status')->equals($status);
@H_
404_0@这里面,在mongodb里面不会默认帮你识别这是一个int型,是什么类型,必须手动的传入。
$endTimestamp) {
throw new \Exception("参数不正确",BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
$start = date('Y-m-d 00:00:00',$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();
@H_
404_0@更多关于Symfony2相关
内容感兴趣的读者可查看本站专题:《
》、《》、《》、《》、《》、《》、《》、《》、《》及《》
@H_404_0@希望本文所述对大家基于Symfony2框架的
PHP程序设计有所帮助。