1 回答

TA貢獻1827條經驗 獲得超8個贊
您的代碼有很多問題。因為你是新人,所以我會盡力提供幫助。我不知道為什么這個問題被標記下來。到目前為止的兩條評論與您的問題并不真正相關。
這里的一個問題是在 \DateTime 中使用“sub”,而且事實上你只有 1 個 \DateTime 對象。最后,當您查詢數據庫時,您完全節省了時間。
“sub”函數從日期中減去間隔。所以你的代碼所說的是:“獲取當前日期和時間,然后從中減去 15 小時 30 分鐘,現在選擇所有小于或等于和大于或等于今天日期的記錄(忽略時間)”
您想要的是有 2 個 \DateTime 對象,一個用于結束時間,一個用于開始時間。例如:
//get the current date time
$timeFrom = new \DateTime();
//now set the time to 00:00
$timeFrom->setTime(0,0,0);
//get the current date time
$timeTo = new \DateTime();
//now set the time to 00:00
$timeTo->setTime(15,30,0);
return $this->createQueryBuilder('b')
->andWhere('b.reservationDate <= :timeTo')
->andWhere('b.reservationDate >= :timeFrom')
->orderBy('b.hours', $order)
->setParameter('timeTo', $timeTo->format('Y-m-d H:i:s'))
->setParameter('timeFrom', $timeFrom->format('Y-m-d H:i:s'))
->setMaxResults($limit)
->getQuery()
->getResult();
當然有多種不同的方法來設置日期/時間,但要注意的關鍵點是 1 個 \DateTime 對象一次只能保存 1 個日期和時間。您可以按任意時間間隔更改該日期或時間,但它只會保留 1 個新時間。它沒有范圍。
- 1 回答
- 0 關注
- 108 瀏覽
添加回答
舉報