DQL选择加入

时间:2013-02-14 20:43:57

标签: join doctrine dql

我正在尝试进行DQL查询(来自symfony 2.2的学说)但这些实体没有成功:

课 其中有几个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实体。如果我从课程中选择,我就无法加入课程(这可能是我应该做的)。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

然而它就像一个魅力!