最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Symfony2針對(duì)輸入時(shí)間進(jìn)行查詢的方法分析

 更新時(shí)間:2017年06月28日 09:32:08   作者:隨風(fēng)飄揚(yáng)5566  
這篇文章主要介紹了Symfony2針對(duì)輸入時(shí)間進(jìn)行查詢的方法,結(jié)合實(shí)例形式分析了Symfony2針對(duì)mysql及MongoDB的輸入時(shí)間進(jìn)行轉(zhuǎn)換與查詢的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Symfony2針對(duì)輸入時(shí)間進(jìn)行查詢的方法。分享給大家供大家參考,具體如下:

一般情況下:前端輸入一個(gè)時(shí)間,我們一般是先將時(shí)間修改成一個(gè)時(shí)間戳

strtotime — 將任何英文文本的日期時(shí)間描述解析為 Unix 時(shí)間戳

例如:

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

然后:如果只是時(shí)間,為防止別人傳的時(shí)間是造假,需要將時(shí)間都修改成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('起始時(shí)間不為空', BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
if (empty($endDate)) {
  $endDate = $startDate;
}
$startTimestamp = strtotime($startDate);
$endTimestamp = strtotime($endDate);
if ($startTimestamp > $endTimestamp) {
  throw new \Exception('時(shí)間參數(shù)錯(cuò)誤', 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('時(shí)間格式不正確', 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中的時(shí)間的輸入和查詢列子

在這里面其實(shí)有兩個(gè)坑:

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

這里面,對(duì)于時(shí)間的查詢,大于和小于,一定要傳一個(gè)對(duì)象。

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

這里面,在mongodb里面不會(huì)默認(rèn)幫你識(shí)別這是一個(gè)int型,是什么類型,必須手動(dòng)的傳入。

$data = array();
if (!isset($startDate)) {
  throw new \Exception("參數(shù)不正確", BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
if (empty($endDate)) {
  $endDate = $startDate;
}
$startTimestamp = strtotime($startDate);
$endTimestamp = strtotime($endDate);
if ($startTimestamp > $endTimestamp) {
  throw new \Exception("參數(shù)不正確", 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("參數(shù)不正確", BaseException::ERROR_CODE_ILLEGAL_PARAMETER);
}
$orderList = $query->sort('create_time', 'DESC')
  ->getQuery()
  ->execute();

更多關(guān)于Symfony2相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Symfony框架入門教程》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《ThinkPHP入門教程》、《ThinkPHP常用方法總結(jié)》、《Zend FrameWork框架入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對(duì)大家基于Symfony2框架的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

小金县| 晋城| 台湾省| 虎林市| 宁强县| 宁陵县| 新干县| 石棉县| 花莲市| 郓城县| 新巴尔虎右旗| 桑日县| 滨州市| 湖南省| 松溪县| 昌邑市| 凤台县| 青阳县| 霍山县| 桐城市| 宁德市| 镇江市| 元氏县| 钟山县| 望谟县| 双柏县| 纳雍县| 连江县| 堆龙德庆县| 常宁市| 太保市| 井研县| 黑龙江省| 廉江市| 鸡东县| 宜兰县| 永定县| 师宗县| 哈密市| 岳阳市| 桃江县|