簡體   English   中英

在Symfony 3.4中,Doctrine 2.2 Datetime字符串轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM