2012-04-15 78 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