2012-08-31 6 views
5

Próbuję usunąć związek ManyToMany wewnątrz Doctrine 2. Mam dwie jednostki - User i TargetGroup.ManyToMany nie usuwa

W moim User podmiotu mam:

/** 
* @ORM\ManyToMany(targetEntity="TargetGroup", inversedBy="users") 
*/ 
private $targetGroups; 

W moim TargetGroup podmiotu mam:

/** 
* @ORM\ManyToMany(targetEntity="User", mappedBy="targetGroups") 
*/ 
private $users; 

Próbuję zadzwonić:

$user->removeTargetGroup($targetGroup); 
$targetGroup->removeUser($user); 

$em->persist($user); 
$em->persist($targetGroup); 
$em->flush(); 

dwóch metod są wykorzystywane :

public function removeTargetGroup(Path To Bundle $targetGroups) 
{ 
    $this->targetGroups->removeElement($targetGroups); 
} 

public function removeUser(Path To Bundle $users) 
{ 
    $this->users->removeElement($users); 
} 

Nie powoduje błędu, ale nie wykonuje żadnego z zapytań o usunięcie.

Wszelkie sugestie?

+0

http://stackoverflow.com/questions/6328535/on-delete-cascade-with-doctrine2 – Stony

Odpowiedz

3

Zajrzyj na Doctrine cascade property, odłączyć w Twoim przypadku.

Jeśli ustawisz cascade={"detach"} dla obu adnotacji ManyToMany, rekordy crosstable powinny upuszczać na persist.