Doctrine 2.1の時点では、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に変換されているため、CASEWHENの結果をエンティティのプロパティとして設定したいと思います。
->addSelect("CASE WHEN f.photo is NULL THEN false ELSE true END as p.is_favorited")
しかし、残念ながら、Doctrineはこれを好まないようです:
[構文エラー]0行目、65列目:エラー:Doctrine \ ORM \ Query \ Lexer :: T_FROMが必要ですが、「。」を取得しました。
エンティティにDQLで作成されたプロパティを設定する代わりの方法はありますか?