0

私は現在、ZFでDoctrine2を使用しているプロジェクトで働いています。ここまでは順調ですね。しかし、私はバグのように見える問題を抱えています。

私は自分のリポジトリの1つに次のコードを書きました:

$dql = 'SELECT a, s.firstName, s.lastName FROM Model_Application a, Model_Mission m 
        JOIN a.student s WHERE a.mission = m.id AND m.company = :company';

$result = $this->getEntityManager()->createQuery($dql)
                                   ->setParameter('company', $company)
                                   ->getResult();

次のSQLが生成されました:

SELECT a0_.coverLetter AS coverLetter0, [... lot of useless things],
a0_.student_id AS student_id5, a0_.mission_id AS mission_id6
FROM Applications a0_, Missions m2_ INNER JOIN Students s3_
ON a0_.student_id = s3_.id LEFT JOIN Users u1_ ON s3_.id = u1_.id
WHERE a0_.mission_id = m2_.id AND m2_.company_id = ?

ただし、常に「ON句の不明な列a0_.student_id」が表示されますが、student_id列は実際にはApplicationsテーブルに存在します。

少しグーグルで検索したところ、このリンクhttp://www.oscommerce-fr.info/faq/qa_info.php?qID=198(フランス語で申し訳ありません)を見つけました。 FROM句がいくつかある場合は、括弧を追加する必要があります(私の場合です)。

変更してSQLコードを書き直すと、FROMアプリケーションa0_、ミッションm2_

に :

FROM (Applications a0_, Missions m2_)

できます !ただし、DQLコードにこれらの括弧を追加する方法がわかりません(試しましたが失敗しました)。

それで、おそらくそれはバグであり、Doctrine 2は、FROM句が複数ある場合は常に括弧を挿入する必要がありますか、それとも私が間違っているのでしょうか?

4

1 に答える 1

0

わかりました、このリンクのおかげで解決します: http://www.doctrine-project.org/jira/browse/DDC-1047

重要なのは、DQL の順序を変更することです。

$dql = 'SELECT a, s FROM Model_Application a JOIN a.student s, Model_Mission m
        WHERE a.mission = m.id AND m.company = :company';
于 2011-09-11T17:23:58.753 に答える