Ab Dokumentin 2.1 wird die CASE WHEN-Anweisung unterstützt, aber es gibt nicht viel Dokumentation darüber. Mein Ziel ist es, einen Booleschen Wert gesetzt zu sagen, ob ein Foto von einem Benutzer favorisiert wurde:Speichern der "CASE WHEN" -Bedingung in Doctrine2-Entität
->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));
Aber weil meine Entitäten in json von JMSSerializer transformiert werden, würde Ich mag die CASE setzen, wenn das Ergebnis als Eigenschaft auf der Entität.
->addSelect("CASE WHEN f.photo is NULL THEN false ELSE true END as p.is_favorited")
aber sich leider Lehre scheint nicht das mögen:
[Syntax Error] line 0, col 65: Error: Expected Doctrine\ORM\Query\Lexer::T_FROM, got '.'
Gibt es eine Alternative zum Einstellen DQL Eigenschaften für eine Entität erstellt?
Ist das Ergebnis gesetzt Kartierungsarbeiten mit DQL? – gremo
Würde '-> addSelect ('f.photo IS NOT NULL')' nicht den gleichen Effekt haben (aber vielleicht nicht Doctrine stolpern)? –
Haben Sie versucht, einfach das 'CASE' in'() 'wie 'zu kapseln (CASE WENN f.photo NULL DANN falsch ist ELSE wahr END) wie is_favorited'? – prodigitalson