【问题标题】:Symfony 2 : [Semantical Error] line 0, col 489 near 'r2_.job LIKE': Error: 'r2_' is not definedSymfony 2:[语义错误]第0行,'r2_.job LIKE'附近的第489列:错误:'r2_'未定义
【发布时间】:2017-11-19 01:23:19
【问题描述】:

我在使用自动生成的别名调用子类属性时遇到问题。

这是我使用 getSQL() 函数打印的查询部分。我可以看到查询中已经生成了别名。

SELECT r0_.id AS id0, r0_.title AS title1, r0_.created_at AS created_at5, r0_.updated_at AS updated_at6, r1_.date AS date7, r1_.job AS job8, r2_.date AS date13, r2_.time AS time14, r2_.job AS job15
FROM reports r0_ 
LEFT JOIN reports_small_works r1_ ON r0_.id = r1_.id 
LEFT JOIN reports_call_out r2_ ON r0_.id = r2_.id 
WHERE r0_.division_id = 1
ORDER BY r0_.id 
DESC

如何使用该 reports_call_out 别名? Reports 是父类,Reports_Call_out 和 Reports_small_works 都是子类,在查询中作为 LeftJoin 默认追加。

【问题讨论】:

    标签: doctrine-orm alias symfony-2.1


    【解决方案1】:

    我的猜测是,reports_call_out 没有“工作”列,而您正在尝试选择它。您可以使用 getDQL() 函数发布您的 DQL 吗?要使用连接表别名,在连接后传递它,如下所示:

    SELECT ...
    FROM reports r //r is alias for reports here
    LEFT JOIN r.reports_call_out rco ...//rco is alias for reports_call_out here
    

    或者如果您使用的是QueryBuilder,请像这样传递它:

    /* ReportsRepository.php */
    $this->createQueryBuilder('r')//r is alias for reports here
    ->select('...')
    ->leftJoin('r.reports_call_out', 'rco')//rco is alias for reports_call_out here
    

    【讨论】:

    • 是的,我已经这样做了,但没有添加到查询和报告中,默认情况下,_call_out 在查询中分配为左连接,因为它是报告类的子级
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 2019-08-09
    • 1970-01-01
    • 2017-10-20
    • 2023-02-13
    • 2013-08-11
    相关资源
    最近更新 更多