我对Doctrine ORM还是很陌生,我正在尝试用学说转换原始SQL查询以获取实体数组。
基本上,我想获得一个间接注册用户的多个course
实体之一。course
ID在traineeship
表中。traineeship
id和user
id在registration
表中。
这是我的SQL查询:
SELECT * FROM course c
LEFT JOIN traineeship t
ON c.id = t.courseId
LEFT JOIN registration r
ON t.id = r.traineeshipId
WHERE r.userId = 2681;
这是我在教义上尝试做的事情:
return $this->createQueryBuilder('c')
->andWhere('t.course = c')
->leftJoin('c.traineeships', 't')
->andWhere('r.traineeship = t')
->leftJoin('t.registrations', 'r')
->andWhere('r.id = :user')
->setParameter('user', $user)
->getQuery()
->execute();
通过我的原始SQL查询,我得到了两个具有给定ID的预期结果。通过按理论生成的查询,我只能得到一个结果。所以我想我的学说用途不好。
(教义关系:
课程OneToMany培训生>>
实习<< OneToMany >>注册
注册ManyToOne
用户)我对Doctrine ORM还是很陌生,我正尝试用学说转换原始SQL查询以获取实体数组。基本上,我想获得用户间接地在其他课程中使用的课程实体之一...return $this->createQueryBuilder('c')
->leftJoin('c.traineeships', 't')
->leftJoin('t.registrations', 'r')
->andWhere('r.user = :user')
->setParameter('user', $user)
->getQuery()
->getResult();