我有3個表:考試,現場和數據。教條加入條件
的關係是:
考試多對多場;字段oneToMany數據;考試一對多數據
我需要指定我做了FIELD_ID和exam_id獲得所需要的數據 在SQL:
SELECT * FROM exam
LEFT JOIN field ON exam.id = field.exam_id
LEFT JOIN data ON field.id = data.field_id AND (data.exam = exam.id)
這一工程
教義:
$this->_em->getRepository('FwFollowBundle:Exam')
->createQueryBuilder('exam')
->leftJoin('exam.field', 'field')
->leftJoin('field.data', 'data', 'WITH', 'data.exam = exam')
->select ('exam', 'field', 'data')
結果不會被'WITH'條件過濾。
我想與他們的田地返回所有的考試,如果他們有,他們的數據
我一個人知道爲什麼。 THX
編輯1: 我做了一些垃圾,試圖發現問題。 在我的項目中,我在考試和現場之間邁出了一步。 我這樣做
$this->_em->getRepository('FwFollowBundle:Exam')
->createQueryBuilder('exam')
->leftJoin('exam.score', 'score')
->leftJoin('score.fields', 'field')
->leftJoin('field.data', 'data', 'WITH', 'data.exam = exam')
->select ('exam', 'score', 'field', 'data')
對於2個考試我也有同樣的分數,所以相同的字段。我只與數據有區別。 這是2場考試的Field實體的相同實例。這就是我沒有想要的數據的原因。
THX,但與查詢我有回報 – lala
沒有我的回答是短sorry.With查詢,只能用數據分別爲考試回報。我需要返回所有考試,其領域,如果存在的話,數據 – lala