教条2 QB一个多连接的语义错误



我正在尝试使用Doctrine2 QueryBuilder创建查询。

    $qb = $this->getObjectManager()->createQueryBuilder();
    $qb->select( array('n', 't', 'c') )
        ->from('ApplicationEntityNotification', 'n')
        ->leftJoin('n.notificationType', 't')
        ->leftJoin('n.course', 'c')
        ->leftJoin('c.studyCourses', 's');

实体Course中的相关代码如下:

    /**
     * @ORMOneToMany(targetEntity="StudyCourses", mappedBy="Course", cascade={"all"})
     */
    protected $studyCourses;

实体StudyCourse中的相关代码如下:

    /**
     * @ORMManyToOne(targetEntity="Course", inversedBy="studyCourses")
     * @ORMJoinColumn(name="Course", referencedColumnName="Id", nullable=true)
     */
    protected $course;  

现在,当我试图运行我的查询,我得到一个语义错误附近"。我认为打印由Doctrine创建的SQL会给我关于这个错误的更好的信息,但事实上它是:

SELECT n0_.Id AS Id0, n0_.Timestamp AS Timestamp1, n0_.TitleHtml AS TitleHtml2, n0_.ContentHtml AS ContentHtml3, n1_.Id AS Id4, n1_.Created AS Created5, n1_.Updated AS Updated6, n1_.Name AS Name7, c2_.Id AS Id8, c2_.Created AS Created9, c2_.Updated AS Updated10, c2_.Name AS Name11, c2_.Description AS Description12, c2_.Code AS Code13, c2_.ObjectId AS ObjectId14, c2_.IsActive AS IsActive15, n0_.NotificationType AS NotificationType16, n0_.User AS User17, n0_.Department AS Department18, n0_.Study AS Study19, n0_.Course AS Course20, n0_.Category AS Category21, c2_.Language AS Language22 FROM Notification n0_ LEFT JOIN NotificationType n1_ ON n0_.NotificationType = n1_.Id LEFT JOIN Course c2_ ON n0_.Course = c2_.Id LEFT JOIN 

它只在左JOIN之后停止!

任何帮助都会很感激,因为我真的不知道我做错了什么,或者如何解决这个问题。我在网上搜索了类似的错误,但到目前为止还没有找到。

尝试在select数组内至少选择studyCourses表中形成leftJoin所需的列。首先尝试获取所有内容,例如"select(array('n', 't', 'c', 's'))"。如果没有选择列,它有时会中断。如果这有效,不要取studyCourses表中的所有列,只需在select中获取相关列以形成leftJoin,例如's.id'。

希望对你有帮助。

干杯!

相关内容

  • 没有找到相关文章

最新更新