2017-06-28 3 views
0

イメージとカテゴリのエンティティがあります。ジョイントテーブル(1次元)を使用する多対多。私は複数のオプションを持つDoctirneのObjectSelectフォーム要素を使用しています。いくつかのカテゴリを選択すると、Doctrineはレコードを挿入します。しかし、私がそれらをdeselctしたいとき - それはしません。 removeCategoriesメソッドを正しく実装しましたか?私は小さな何かが欠けていてもよいが、私はそれを見つけた要素Doctrine ObjectSelectはデスキュー時にリレーションを削除しません

$this->add([ 
      'name' => 'categories', 
      'type' => ObjectSelect::class, 
      'attributes' => [ 
       'multiple' => true, 
       'class' => 'chosen-select', 
      ], 
      'options' => array(
       'object_manager' => $this->getServiceLocator()->get(EntityManager::class), 
       'target_class' => Category::class, 
       'property' => 'title', 
       'is_method' => true, 
       'find_method' => array(
        'name' => 'findAll', 
       ), 
      ), 
     ]); 

答えて

0

を次したフォームのフィールドセットで

Class Image 
    ... 
    /** 
    * @ORM\ManyToMany(targetEntity="Categories") 
    * @ORM\JoinTable(name="images_categories", 
    *  joinColumns={@ORM\JoinColumn(name="image_id", referencedColumnName="id")}, 
    *  inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")} 
    *  ) 
    */ 
    protected $classBobjects; 
    ... 
    public function getCategories() 
    { 
     return $this->categories; 
    } 

    public function addCategories($categories) 
    { 
     foreach ($categories as $category) { 
      $this->categories->add($category); 
     } 
    } 

    public function removeCategories($categories) 
    { 
     foreach ($categories as $category) { 
      $this->categories->remove($category); 
     } 
    } 

をそれを把握するカント。このエラーは、removeCategories()を実装する際に発生しました。

$this->categories->remove($category); 

should be 

$this->categories->removeElement($category); 
関連する問題