2015-06-08 3 views
0

Я пытался обновить много-много отношений между «книгой» < - -> * тегом ». Для этого мне сначала захотелось удалить все текущие связанные теги книги - чтобы добавить впоследствии снова измененные/введенные теги. Удаление всех тегов книги работает, но когда тег не имеет больше книг, отображенные, не удаляются:Symfony ManyToMany удалить запись

// remove all tags from book 
    foreach($book->getTags() as $tag) 
    { 
     $tag->removeBook($book); 

     // remove tag if no books are mapped anymore 
     if(count($tag->getBooks()) == 0) { 
      $this->em->remove($tag); 
     } 
     $this->em->persist($tag); 
    } 
    $this->em->flush(); 

Почему не удалить $ тег (объект тега объект), если счетчик возвращает 0 (я уже проверил, что это enteres блока.

владеющей сторона моего отношения является «Tag» -логический объектом.

ответ

0

Вы просто удаление Tag если count($tag->getBooks()) == 0:

$this->em->remove($tag); 

и снова сохраняющийся его:

$this->em->persist($tag); 

else требуется:

if(count($tag->getBooks()) == 0) { 
    $this->em->remove($tag); 
} else { 
    $this->em->persist($tag); 
} 
0

Возможно, попробуйте положить операцию упорствовать в else заявления.

Хотя Я не тестировал d, мне кажется, что в этом случае, удаляете ли вы тег или нет, вы всегда в конечном итоге сохраняете тег снова.

1

Разъяснения вашей смеси:

удалить объект:

$this->em->remove($tag); 

добавить/изменить объект:

$this->em->persist($tag); 

В обоих случаях вам нужно будет в конце:

$this->em->flush(); 
Смежные вопросы