2013-02-14 89 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