Doctrine2自我加入,如何加入自我无关系列?

时间:2013-09-04 05:06:21

标签: doctrine dql self-join

示例mysql查询:

SELECT
a1.*
FROM
agreement a1
LEFT JOIN agreement a2 on a1.agreementType = a2.agreementType and a2.id > a1.id
WHERE
a2.id is null

查询的目的是获取返回类型的最后一个协议。有很多类型,我只想要列出每种类型的最新协议。我上面的示例查询按预期工作,但没有进入DQL。

如果我没有引用自身的列,我将如何在DQL中执行此操作?请注意,“agreementType”也是不同表的外键。

1 个答案:

答案 0 :(得分:13)

想出来。以为我会分享。

        SELECT
            a1
        FROM
            My\Model\Agreement a1
            LEFT JOIN My\Model\Agreement a2
                WITH a1.agreementType = a2.agreementType AND a2.id > a1.id
        WHERE
            a2.id IS NULL