2016-08-15 3 views
-2

多対多リレーションシップを持つ2つのエンティティ:ユーザとタグがあります。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

を見ることができます。

また、あなたはタグに

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); 
    } 
} 

乾杯

をクリアするには、ユーザーエンティティに機能を追加できます

$tag->removeUser($user); 

のようなものを呼び出す必要がありhttp://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#owning-and-inverse-side-on-a-manytomany-association

@ドキュメントをチェックアウト

関連する問題