2012-04-15 74 views
0

我在學說2 DQL工作有問題,DQL工作成功(我工作的一個項目,其教義與Zend框架集成)的學說(ORM工具)

當我與實體管理工作,下面的代碼運行

$user= $this->_em->find('Core\Entities\Userlog', 1); //index=1 
    $user->setlogindate(date(DATE_RFC822)); 
    $this->_em->persist($user); 
    $this->_em->flush(); 

我需要下面的代碼運行:

$qb=$this->_em->createQueryBuilder(); 
    $qb->update("Core\Entities\Userlog",'t'); 
    $qb->where('t.userlog_id = 1'); 
    $qb->set('t.logindate',date(DATE_RFC822)); 
    $qb->getQuery()->execute(); 

但學說來處理這個代碼的問題。任何想法?

在此先感謝。

+0

你能複製並粘貼主義的錯誤消息嗎? – 2012-04-15 13:54:45

+0

它說,我有一個語法錯誤,但我檢查了語法。 [語法錯誤]第0行,第57列:錯誤:預期主義\\ ORM \\ Query \\ Lexer :: T_EQUALS,得到'Apr'「,」其中「:」#0 \/var \/www \/html \/dms \/library \/Doctrine \/ORM \/Query \ /Parser.php(396):Doctrine \\ ORM \\ Query \\ QueryException :: syntaxError('line 0,col 57:...' ) – Amin 2012-04-15 15:31:17

回答

0

我相信問題是DQL不能「神奇地」將RFC822日期轉換爲匹配Userlog::logindate字段的DATETIME值,就像 - 我假設 - 它發生在Userlog::setlogindate()中。

你應該嘗試使用日期格式與您的數據庫引擎兼容,通常是「Y-M-d H:我:s」的格式,而不是:

... 
$qb->set('t.logindate', date('Y-m-d H:i:s')); 
... 
+0

感謝您的回覆,但我已經測試過以下內容,之前 $ qb = $ this - > _ em-> createQueryBuilder(); $ qb-> update(「Core \ Entities \ Userlog」,'t'); $ qb-> where('t.userlog_id = 1'); $ qb-> set('t.logindate','test'); $ qb-> getQuery() - > execute(); – Amin 2012-04-16 05:35:56

+0

但是你是部分正確的Tamas。我想我已經發現了這個問題,我很快會回來,並會寫一些反饋。 – Amin 2012-04-16 06:15:03