使用原理转置原始SQL查询

问题描述 投票:0回答:1

我对Doctrine ORM还是很​​陌生,我正在尝试用学说转换原始SQL查询以获取实体数组。

基本上,我想获得一个间接注册用户的多个course实体之一。courseID在traineeship表中。traineeshipid和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查询以获取实体数组。基本上,我想获得用户间接地在其他课程中使用的课程实体之一...
php sql symfony orm doctrine
1个回答
0
投票
从原始SQL,我希望以下查询:

return $this->createQueryBuilder('c') ->leftJoin('c.traineeships', 't') ->leftJoin('t.registrations', 'r') ->andWhere('r.user = :user') ->setParameter('user', $user) ->getQuery() ->getResult();

© www.soinside.com 2019 - 2024. All rights reserved.