2013-02-14 150 views
0

我試圖做一個DQL查詢(教義從symfony的2.2)與這些實體沒有成功:DQL選擇加入

課 其中有幾個LessonContent ,它們分別鏈接到用戶

我想檢索一個用戶的所有課程(應該很基本......)。

SELECT l, lc FROM MyBundle:LessonContent lc 
JOIN lc.lesson l JOIN lc.modifiedBy u 
WHERE lc.creation=1 AND u.id = :userId 

但是,這將返回LessonContent實體。如果我從課程中選擇,我無法加入課程(這可能是我應該做的)。

任何人都可以幫助我嗎?

回答

0

原來我需要有一個l.content * s *屬性,以便能夠從課程中選擇,然後加入其餘的。

實體:

/** 
* @var ArrayCollection $contentHistory 
* @ORM\OneToMany(targetEntity="AAA\CoreBundle\Entity\LessonContent", mappedBy="lesson", cascade={"persist", "remove"}) 
* @ORM\OrderBy({"lastModified" = "DESC"}) 
*/ 
private $contentHistory; 

查詢:

SELECT l FROM AAACoreBundle:Lesson l JOIN l.contentHistory lc JOIN lc.modifiedBy u WHERE lc.creation=1 AND u.id = :userId GROUP BY l 

並與它的工作原理就像一個魅力!

1

您查詢的主表是什麼主義給你回爲主要對象,所以下面應該工作(假定l.content指向LessonContent協會):

SELECT l, lc FROM MyBundle:Lesson l 
JOIN l.content lc 
JOIN lc.modifiedBy u 
WHERE lc.creation=1 AND u.id = :userId