0

私は教義で次のクエリを持っています:

$q = Doctrine_Query::create()
    ->select("q.id, q.user_id, count(ua.id) as quantity")
    ->from("question q")
    ->leftJoin("q.Answers a")
    ->leftJoin("a.UserAnswers ua")
    ->groupBy("ua.user_id");

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

SELECT q.id AS q__id, q.user_id AS q__user_id, COUNT(u.id) AS u__0 FROM question q LEFT JOIN answer a ON q.id = a.question_id LEFT JOIN user_answer u ON a.id = u.answer_id GROUP BY u.user_id

そして、MySQLでのこのクエリの結果は次のようになります。

+-------+------------+------+
+ q__id + q__user_id + u__0 +
+-------+------------+------+
+     1 +          1 +    0 +
+-------+------------+------+
+    26 +          6 +    2 +
+-------+------------+------+
+    26 +          6 +    1 +
+-------+------------+------+

Doctrineを使用して、「u__0」列の値を取得する方法はありますか?

私は試した:

$questions = $q->execute();
echo (count($questions));

ただし、結果には2行しかありません(3行ではありません)。

「u__0」列の値を取得するにはどうすればよいですか?(0、2、1)Doctrineを使用していますか?

4

2 に答える 2

2

結果ごとにループして、quantity値を取得する必要があります。

$q = Doctrine_Query::create()
    ->select("q.id as id, q.user_id as question_user_id, ua.user_id as answer_user_id, count(ua.id) as quantity")
    ->from("question q")
    ->leftJoin("q.Answers a")
    ->leftJoin("a.UserAnswers ua")
    ->groupBy("answer_user_id");

$results = $q->execute(array(), Doctrine_Core::HYDRATE_ARRAY);
foreach ($results as $result)
{
    var_dump($result['quantity']);
}
于 2013-03-13T15:26:44.340 に答える
1

SQLクエリを次のように変更しました。

$q = Doctrine_Query::create()
    ->select("q.id, q.user_id, a.id, count(ua.id) as quantity")
    ->from("Answer a")
    ->leftJoin("a.Question q")
    ->leftJoin("a.UserAnswers ua")
    ->groupBy("ua.user_id");

そしてそれは動作します;)

于 2013-03-14T18:07:23.323 に答える