0

次のコードがあります。

$sub_questions_no_restricted = Doctrine_Query::create()
                ->select("q2.id")
                ->from("question q2")
                ->leftJoin("q2.CountryRestrictions cr2")
                ->groupBy("q2.id")
                ->having("count(cr2.country_iso)=0");

国の制限がないすべての質問IDを取得したい

しかし、symfony は、having 句の一部を無視して、正しい SQL を生成しません。

生成される DQL と SQL は次のとおりです。

DQL=SELECT q2.id FROM question q2 LEFT JOIN q2.CountryRestrictions cr2 GROUP BY q2.id HAVING count(cr2.country_iso)=0
SQL=SELECT q.id AS q__id FROM question q LEFT JOIN country_restriction c ON q.id = c.question_id GROUP BY q.id HAVING count(c.country_iso)=)

SQL は「0」を無視し、「)」を追加します。

私は何を間違っていますか?それは教義の問題ですか?助言がありますか?

4

1 に答える 1

2

having 句の ) と = の間にスペースを入れてみてください。

$sub_questions_no_restricted = Doctrine_Query::create()
                ->select("q2.id")
                ->from("question q2")
                ->leftJoin("q2.CountryRestrictions cr2")
                ->groupBy("q2.id")
                ->having("count(cr2.country_iso) = 0");
于 2013-03-12T01:39:03.500 に答える