#doctrine-orm #deep-copy
#doctrine-orm #глубокое копирование
Вопрос:
Я пытаюсь реализовать функциональность глубокого копирования, используя Doctrine 2, и у меня почти получилось, за исключением метода в одной из моих сущностей, который пытается удалить определенные записи из ассоциации перед возвратом коллекции.
Проблема в том, что когда я вызываю getRoofAreas() ниже, я получаю массив прокси-объектов, которые не нравятся моему коду глубокого копирования:
/**
* @OneToMany(targetEntity="EntitiesQuotingRoofAreas", mappedBy="customerId", cascade={"persist"})
* @OrderBy({"areaIndex" = "ASC"})
*/
private $roofAreas;
public function getRoofAreas() {
$em = Zend_Registry::get('em');
$q = $em->createQuery("select ra from EntitiesQuotingRoofAreas ra where ra.dateDeleted IS NULL and ra.customerId = " . $this->getId());
return $q->getResult();
}
но если бы я изменил это на:
/**
* @OneToMany(targetEntity="EntitiesQuotingRoofAreas", mappedBy="customerId", cascade={"persist"})
* @OrderBy({"areaIndex" = "ASC"})
*/
private $roofAreas;
public function getRoofAreas() {
return $roofAreas;
}
тогда он вернул бы постоянную коллекцию, которая при повторении получила бы объекты Entity, что мне и нужно. Последний подход не удаляет удаленные области крыши, что является обязательным для моего варианта использования.
Есть ли способ получить объект Entity для прокси-объекта?
Заранее спасибо за любую помощь, которую кто-либо может предоставить
Комментарии:
1. Вы пробовали запрос::HYDRATE_OBJECT?
2. $query = $em->CreateQuery(‘ВЫБЕРИТЕ u Из CmsUser u’); $users = $query->GetResult(Запрос::HYDRATE_OBJECT);
Ответ №1:
Измените свой метод результатов
return $q->getArrayResult();