《PHP應用:Symfony2針對輸入時間進行查詢的方法分析》要點:
本文介紹了PHP應用:Symfony2針對輸入時間進行查詢的方法分析,希望對您有用。如果有疑問,可以聯系我們。
本文實例講述了Symfony2針對輸入時間進行查詢的方法.分享給大家供大家參考,具體如下:PHP編程
一般情況下:前端輸入一個時間,我們一般是先將時間修改成一個時間戳PHP編程
strtotime ― 將任何英文文本的日期時間描述解析為 Unix 時間戳PHP編程
例如:PHP編程
$startTimestamp = strtotime($startDate); $endTimestamp = strtotime($endDate);
然后:如果只是時間,為防止別人傳的時間是造假,需要將時間都修改成Y-m-d的形式PHP編程
$start = date('Y-m-d 00:00:00', $startTimestamp); $end = date('Y-m-d 23:59:59', $endTimestamp);
1. 在MySQL中的使用PHP編程
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中的時間的輸入和查詢列子PHP編程
在這里面其實有兩個坑:PHP編程
@ ->field('submit_time')->gt(new \DateTime($start)) ->field('submit_time')->lt(new \DateTime($end))
這里面,對于時間的查詢,大于和小于,一定要傳一個對象.PHP編程
$query->field('status')->equals($status);
這里面,在mongodb里面不會默認幫你識別這是一個int型,是什么類型,必須手動的傳入.PHP編程
$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常見數據庫操作技巧匯總》PHP編程
希望本文所述對大家基于Symfony2框架的PHP程序設計有所幫助.PHP編程
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/561.html