Doctrine orm 如何让原则2返回实体而不是代理

Doctrine orm 如何让原则2返回实体而不是代理,doctrine-orm,deep-copy,Doctrine Orm,Deep Copy,我正在尝试使用Doctrine 2实现深度复制功能,除了我的一个实体上的一个方法试图在返回集合之前从关联中删除某些记录外,我几乎拥有了它 问题是,当我在下面调用GetRootAreas()时,我得到了一个代理对象数组,我的深度复制代码不喜欢这个数组: /** * @OneToMany(targetEntity="\Entities\QuotingRoofAreas", mappedBy="customerId", cascade={"persist"}) * @OrderBy({"areaI

我正在尝试使用Doctrine 2实现深度复制功能,除了我的一个实体上的一个方法试图在返回集合之前从关联中删除某些记录外,我几乎拥有了它

问题是,当我在下面调用GetRootAreas()时,我得到了一个代理对象数组,我的深度复制代码不喜欢这个数组:

/**
 * @OneToMany(targetEntity="\Entities\QuotingRoofAreas", mappedBy="customerId", cascade={"persist"})
 * @OrderBy({"areaIndex" = "ASC"})
 */

private $roofAreas;

public function getRoofAreas() {
    $em = \Zend_Registry::get('em');
    $q = $em->createQuery("select ra from \Entities\QuotingRoofAreas ra where ra.dateDeleted IS NULL and ra.customerId = " . $this->getId());
    return $q->getResult();
}
但如果我将此更改为:

/**
 * @OneToMany(targetEntity="\Entities\QuotingRoofAreas", mappedBy="customerId", cascade={"persist"})
 * @OrderBy({"areaIndex" = "ASC"})
 */

private $roofAreas;

public function getRoofAreas() {
    return $roofAreas;
}
然后它将返回一个持久的集合,当遍历该集合时,将得到我想要的实体对象。后一种方法并没有去除已删除的屋顶区域,这是我的用例所必须的

有没有办法获取代理对象的实体对象


提前感谢任何人提供的任何帮助

更改结果方法

return $q->getArrayResult();

您是否尝试过Query::水合物_对象?$Query=$em->createQuery(“从CmsUser u中选择u”)$users=$query->getResult(查询::水合物对象);