[英]Doctrine 2.2 Datetime string conversion in Symfony 3.4
我正在對搜索欄進行故障排除,以返回從“到”和“從”日期選擇器中選擇的時間段內的行。
我最初收到此錯誤:
錯誤:方法Doctrine \\ ORM \\ Query \\ Expr \\ Comparison :: __ toString()不得引發異常,已捕獲Symfony \\ Component \\ Debug \\ Exception \\ ContextErrorException:可捕獲的致命錯誤:DateTime類的對象無法轉換為字符串
我使用-> format()函數將相關查詢轉換為字符串:
if (is_array($value) && isset($value['to'])) {
$to = \DateTime::createFromFormat('d/m/Y H:i:s', $value['from'] . ' 23:59:59');
var_dump($value, $to);die;
if ($to <> false) {
$query->andWhere(
$query->expr()->lte($path, $to->format('Y-m-d H:i:s'))
);
}
}
現在,該學說會引發以下錯誤:
[語法錯誤]行0,列977:錯誤:預期的字符串結尾,得到了'00'
我還需要做一些其他事情來格式化日期,以使其成為querybuilder可以接受的格式嗎? 我嘗試使用/代替:,但這會導致問題。
如果我沒記錯的話,您應該使用literal()或查詢參數。 而且由於lte
參數不是恆定的,因此不建議使用literal()
(由於可能的SQL注入)。
無論如何,這樣的事情可能應該起作用:
如果(is_array($ value)&& isset($ value ['to'])){
if (is_array($value) && isset($value['to'])) {
$to = \DateTime::createFromFormat('d/m/Y H:i:s', $value['from'] . ' 23:59:59');
if ($to <> false) {
$query->andWhere($query->expr()->lte($path, ':to'));
$query->setParameter('to', $to->format('Y-m-d H:i:s'));
}
}
它行得通嗎?
希望能幫助到你...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.