如何在不加载关联实体的情况下获得关联实体的ID?

jlb*_*jlb 3 symfony doctrine-orm

考虑具有(单向)manyToOne关联的实体:

EntityX:
    type: entity
    table: x
    id:
        id:
            type: integer
            generator: { strategy: AUTO }

    fields:
        type:
            type: string

    manyToOne:
        entityY:
            targetEntity: EntityY
Run Code Online (Sandbox Code Playgroud)

EntityY的任何属性都将通过代理类延迟加载; 但是,在代理加载之前,EntityY的标识符将(必须)可用.在不触发EntityY的代理加载器的情况下获取此标识符的最佳方法是什么?

编辑:我正在使用Symfony2(2.0.11),因此Doctrine依赖关系被限制为v2.1

Cer*_*rad 6

简答:升级到Doctrine 2.2.EntityY-> getId()将不再触发类的加载.

很久以前我确实看到了一些代码,它们展示了如何进入UnitOfWork对象并将其拉出来.找不到它.可以尝试搜索Doctrine2用户邮件列表.但鉴于2.2修复了这个问题,我只会加载,直到我可以升级.

  • 在doctrine邮件列表中找到了解决方案.`$ entityYId = $ em-> getUnitOfWork() - > getEntityIdentifier($ entityX-> getEntityY());`干杯! (2认同)