私は現在、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句が複数ある場合は常に括弧を挿入する必要がありますか、それとも私が間違っているのでしょうか?