2014-10-30 5 views
2

서로 다른 연관이있는 User 클래스가 있습니다. 나는 새로운 관련 객체, AClass을 만들 때, 나는 다음을 수행 : 나는 YML 옵션 파일에서 옵션 cascade: ['persist']을 사용했기 때문에ArrayCollection 내의 엔티티에서 수행 된 변경 사항을 업데이트하는 방법

$object = new AClass(); 
$user->addAClass($object); 
$userManager->updateUser($user); 

새로운 개체가 데이터베이스에 지속 (생성)됩니다. 내가 무효에 cascade: ['refresh']을 제외한 모든 시도

$AClasses = $user->getAClasses(); 
foreach ($AClasses as $object) { 
    if ($object->hasCondition) { 
     $object->setProperty($value); 
    } 
} 
$userManager->updateUser($user); 

: 내가 이해하지 못하는 것은, 내가 이런 일을했다면 (현명한 데이터베이스)를 업데이트하는 방법입니다.

+1

정말 업데이트가 필요하지 않습니다. 모든 엔티티 관리자는 엔티티 관리자를 통해 관리되어야합니다. 간단한 $ em-> flush()로 인해 업데이트가 발생해야합니다. – Cerad

+0

사용자 클래스에 FOSUB EntityManager를 사용합니다. 다른 두 관리자와 함께 할 수도 있지만,이 시점에서이 방법을 사용하여이를 달성하는 방법을 알고 싶습니다. – stevenll

+1

두 개의 다른 엔티티 관리자를 사용하는 것은 아닙니다. 나는 당신의 코드가 엔티티 관리자가 플러시되는 동안 작동해야한다고 말하고있다. – Cerad

답변

1

코드는 괜찮아 보입니다. 같은 지속 .yml를 업데이트하려고 설정 :

//A - in double quotes 
cascade: ["persist"] 

또는

//B - new line 
cascade 
    - persist 

또는

//C - no quotes 
cascade: [ persist ] 

그것은 확실히 .yml입니다, 내 비슷한 코드의 작품은 (기반 주석) 단지 당신처럼 보이는한다.

+0

계단식 지속 관계를 통해 정상적으로 작동하며 주 엔터티와의 연결에있는 엔터티에 대한 업데이트를 계단식으로 연결할 수 없습니다. – stevenll