Как заставить Doctrine 2 вернуть сущность вместо прокси - PullRequest
4 голосов
/ 29 мая 2011

Я пытаюсь реализовать функциональность глубокого копирования с помощью Doctrine 2, и у меня почти она есть, за исключением метода на одном из моих объектов, который пытается удалить определенные записи из ассоциации перед возвратом коллекции.

Проблема в том, что когда я вызываю getRoofAreas () ниже, я получаю массив объектов Proxy, который не нравится моему глубокому копированию:

/**
 * @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;
}

тогда он будет возвращать постоянную коллекцию, которая при повторном прохождении получит мне объекты Entity, чего я и хочу. Последний подход не удаляет удаленные области крыши, что является обязательным для моего случая использования.

Есть ли способ получить объект Entity для объекта Proxy?

Заранее благодарен за любую помощь, которую может оказать любой

1 Ответ

0 голосов
/ 26 сентября 2011

Измените свой метод результатов

return $q->getArrayResult();

* ** +1004 1005 * -project.org / документы / ОРМ / 2.0 / ен / ссылка / DQL-доктрина-запрос-language.html # массив гидратация

...