Symfony2針對(duì)輸入時(shí)間進(jìn)行查詢(xún)的方法分析
本文實(shí)例講述了Symfony2針對(duì)輸入時(shí)間進(jìn)行查詢(xú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í)間的輸入和查詢(xún)列子
在這里面其實(shí)有兩個(gè)坑:
@ ->field('submit_time')->gt(new \DateTime($start)) ->field('submit_time')->lt(new \DateTime($end))
這里面,對(duì)于時(shí)間的查詢(xún),大于和小于,一定要傳一個(gè)對(duì)象。
$query->field('status')->equals($status);
這里面,在mongodb里面不會(huì)默認(rèn)幫你識(shí)別這是一個(gè)int型,是什么類(lèi)型,必須手動(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)容感興趣的讀者可查看本站專(zhuān)題:《Symfony框架入門(mén)教程》、《codeigniter入門(mén)教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《php優(yōu)秀開(kāi)發(fā)框架總結(jié)》、《ThinkPHP入門(mén)教程》、《ThinkPHP常用方法總結(jié)》、《Zend FrameWork框架入門(mén)教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家基于Symfony2框架的PHP程序設(shè)計(jì)有所幫助。
- Symfony查詢(xún)方法實(shí)例小結(jié)
- Symfony2聯(lián)合查詢(xún)實(shí)現(xiàn)方法
- Symfony2使用Doctrine進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)方法實(shí)例總結(jié)
- 高性能PHP框架Symfony2經(jīng)典入門(mén)教程
- Symfony2實(shí)現(xiàn)從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)的方法小結(jié)
- Symfony2學(xué)習(xí)筆記之模板用法詳解
- Symfony2框架學(xué)習(xí)筆記之表單用法詳解
- Symfony2框架創(chuàng)建項(xiàng)目與模板設(shè)置實(shí)例詳解
- symfony2.4的twig中date用法分析
- Symfony2學(xué)習(xí)筆記之控制器用法詳解
- Symfony2安裝第三方Bundles實(shí)例詳解
- Symfony2實(shí)現(xiàn)在controller中獲取url的方法
相關(guān)文章
php+mysql不用遞歸實(shí)現(xiàn)的無(wú)限級(jí)分類(lèi)實(shí)例(非遞歸)
這篇文章主要介紹了php+mysql不用遞歸實(shí)現(xiàn)的無(wú)限級(jí)分類(lèi)實(shí)例,重點(diǎn)在不使用遞歸,需要的朋友可以參考下2014-07-07幾道坑人的PHP面試題 試試看看你會(huì)不會(huì)也中招
這篇文章主要介紹了幾道坑人的PHP面試題,試試看看你會(huì)不會(huì)也中招,這些題目都用了一些障眼法,需要你有一雙火眼金睛哦,需要的朋友可以參考下2014-08-08Laravel框架實(shí)現(xiàn)文件上傳的方法分析
這篇文章主要介紹了Laravel框架實(shí)現(xiàn)文件上傳的方法,結(jié)合實(shí)例形式分析了Laravel框架文件上傳相關(guān)的配置設(shè)置、視圖及控制器相關(guān)操作技巧,需要的朋友可以參考下2019-09-09你可能不知道PHP get_meta_tags()函數(shù)
這篇文章主要介紹了你可能不知道PHP get_meta_tags()函數(shù),比較實(shí)用的一個(gè)函數(shù)了,小編也是第一次看到它,需要的朋友可以參考下2014-05-05PHP 生成N個(gè)不重復(fù)的隨機(jī)數(shù)
本文給大家展示的是一個(gè)實(shí)例,實(shí)用php實(shí)現(xiàn)了生產(chǎn)N個(gè)不同的隨機(jī)數(shù),實(shí)現(xiàn)思路和方法都介紹給了大家,小伙伴們參考下吧。2015-01-01PHP反射使用實(shí)例和PHP反射API的中文說(shuō)明
這篇文章主要介紹了PHP反射使用實(shí)例和PHP反射API的中文說(shuō)明,重點(diǎn)在對(duì)PHP的反射API中每個(gè)方法都做了中文說(shuō)明,需要的朋友可以參考下2014-07-07