2012-11-02 5 views
0

프록시 문서를 유지하고 플러시 할 수 있는지 궁금합니다.Doctrine Mongodb ODM이 프록시 문서를 유지하고 플러시

프록시 문서를 복제하면 (id 매개 변수를 재설정하기 위해 __clone 메서드를 구현하는 것을 잊지 마십시오.) 지속되고 플러시가 삽입 될 것인가?

이 경우는 문서 사본을 원할 경우 발생할 수 있습니다.

예 문서 :

// User.php 
class User 
{ 
// @ReferenceOne(targetDocument="Group") 
private $group; 
} 

// Group.php 
class Group 
{ 
    public function __clone() 
    { 
    if ($this->id) { 
     $this->id = null; 
    } 
    } 
    //.... 
} 

사용법 :

$user = $dm->createQueryBuilder('User')->getQuery()->getSingleResult(); 
$group = $user->getGroup(); // $group is a proxy document 
$newGroup = clone $group; 
$dm->persist($newGroup); 
$dm->flush(); 

이 나쁜 예가 될 수 있지만이 가능인지 아닌지는 알고 그냥.

편집 : 비슷한하고 싶은 분들을 위해, 그것은 직접 작동하지 않습니다하지만 당신은 최근에 분명히 'onFlush'이벤트

답변

0

나는이 같은 질문 (버그) 공격을 사용하여 강제 할 수 있습니다, 은 현재 프록시 문서를 유지할 수 없습니다 (버전 1.0.0-beta9). 나는 문제를 제기하고이 동작을 확인하는 간단한 테스트 케이스를 작성했습니다 : https://github.com/doctrine/mongodb-odm/issues/619.

관련 문제