2016-08-15 129 views
-2

我有兩個entites與多對多的關係:用戶和標籤。Symfony Doctrine:刪除ManyToMany關聯

class User{ 
    /** 
    * @ORM\ManyToMany(targetEntity="Tag", mappedBy="userList") 
    */ 
    private $tagList; 
} 

class Tag{ 
    /** 
    * @ORM\ManyToMany(targetEntity="User", inversedBy="tagList") 
    * @ORM\JoinTable(name="tags_users") 
    */ 
    private $userList; 
} 

問題

當我明確的用戶tagList我也想刪除刪除標記的userList用戶。

$user->getTagList()->clear(); 

但是在JoinTable tags_users我仍然可以看到標籤 - 用戶關聯

回答

1

我想你想做出擁有和反側的關聯,但只更新一個側面。

退房的文檔@http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#owning-and-inverse-side-on-a-manytomany-association

你也應該調用像

$tag->removeUser($user); 

您可以添加一個功能,您的用戶實體清除標籤

class User 
{ 
    function clearTaglist() 
    { 
     foreach ($this->tagList as $tag) { 
      $tag->removeUser($this); 
     } 

     $this->tagList->clear(); 
    } 
} 

class Tag { 
    public function removeUser($user) 
    { 
     $this->userList->removeElement($user); 
    } 
} 

乾杯