Symfony2針對(duì)輸入時(shí)間進(jì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型,是什么類(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查詢方法實(shí)例小結(jié)
- Symfony2聯(lián)合查詢實(shí)現(xiàn)方法
- Symfony2使用Doctrine進(jìn)行數(shù)據(jù)庫(kù)查詢方法實(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本地進(jìn)行API接口測(cè)試的實(shí)例
下面小編就為大家分享一篇PHP本地進(jìn)行API接口測(cè)試的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
基于Laravel實(shí)現(xiàn)的用戶動(dòng)態(tài)模塊開(kāi)發(fā)
這篇文章主要給大家介紹了關(guān)于基于Laravel實(shí)現(xiàn)的用戶動(dòng)態(tài)模塊開(kāi)發(fā)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
laravel 如何實(shí)現(xiàn)引入自己的函數(shù)或類(lèi)庫(kù)
laravel 如何實(shí)現(xiàn)引入自己的函數(shù)或類(lèi)庫(kù)?今天小編就為大家解答一下在laravel中引入自己的函數(shù)或類(lèi)庫(kù)的方法,分享給大家,給大家做個(gè)參考,一起過(guò)來(lái)看看吧2019-10-10
詳解在YII2框架中使用UEditor編輯器發(fā)布文章
這篇文章主要介紹了在YII2框架中使用UEditor編輯器發(fā)布文章,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
Yii 實(shí)現(xiàn)數(shù)據(jù)加密和解密的示例代碼
這篇文章主要介紹了Yii 實(shí)現(xiàn)數(shù)據(jù)加密和解密的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
使用gd庫(kù)實(shí)現(xiàn)php服務(wù)端圖片裁剪和生成縮略圖功能分享
一般用戶上傳頭像時(shí),都會(huì)讓用戶自行裁剪圖片。那么php怎么實(shí)現(xiàn)這個(gè)功能呢?php中裁剪圖片主要使用gd庫(kù)的imagecopyresampled方法2013-12-12
php函數(shù)mkdir實(shí)現(xiàn)遞歸創(chuàng)建層級(jí)目錄
當(dāng)我們想在自己的站點(diǎn)中添加多級(jí)目錄時(shí),可以運(yùn)用php函數(shù)mkdir()來(lái)實(shí)現(xiàn)這個(gè)功能。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10

