從Doctrine 2.1開始,支持CASE WHEN語句,但沒有很多文檔。我的目標是建立一個布爾值來判斷一個照片已被用戶收藏:在Doctrine2實體中存儲「CASE WHEN」條件
->addSelect("CASE WHEN f.photo is NULL THEN false ELSE true END as is_favorited")
->leftJoin("p.favorites", 'f', 'WITH', 'f.owner = :viewer')
->orderBy("p.date_posted", "DESC")
->setParameters(array("owner" => $owner, "viewer" => $viewer));
但是因爲我的實體正在轉化成JMSSerializer JSON,我想設置的情況下結果作爲該實體的財產。
->addSelect("CASE WHEN f.photo is NULL THEN false ELSE true END as p.is_favorited")
但unforunately主義似乎並不喜歡這樣的:
[Syntax Error] line 0, col 65: Error: Expected Doctrine\ORM\Query\Lexer::T_FROM, got '.'
是否有設置DQL創建一個實體性的方法嗎?
是否與DQL的結果集映射的工作? – gremo
''> addSelect('f.photo IS NOT NULL')'不具有相同的效果(但也許不會絆倒Doctrine)? –
你試過簡單地將'CASE'封裝在'()'中嗎?(例如,當f.photo爲NULL,否則爲false,否則爲真END)如同is_favorited'? – prodigitalson