Удалить используя многозначную ассоциацию в symfony2

У меня есть две сущности: инструмент и ОС. Оба связаны. Каждый инструмент может работать во многих ОС. Поэтому я связал их через множество отношений.
Я могу добавить Инструмент и связать его со многими ОС, но я не знаю, как удалить Инструмент и его отношения с Oss (эти отношения добавляются в таблицу os_tool в моей базе данных).

Инструментальный объект:

use Lang\LanguageBundle\Form\ToolType;
namespace Lang\LanguageBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Tool
*/
class Tool
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $nombre;
/**
* @var \Doctrine\Common\Collections\Collection
*/
private $oss;
/**
* Constructor
*/
public function __construct()
{
$this->oss = new \Doctrine\Common\Collections\ArrayCollection();
}

/**
* Add os
*
* @param \Lang\LanguageBundle\Entity\OS $os
* @return Tool
*/
public function addOs(\Lang\LanguageBundle\Entity\OS $os)
{
$os->addTool($this);
$this->oss[] = $os;
}

/**
* Remove os
*
* @param \Lang\LanguageBundle\Entity\OS $os
*/
public function removeOs(\Lang\LanguageBundle\Entity\OS $oss)
{

$this->oss->removeElement($oss);
}

/**
* Get oss
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getOss()
{
return $this->oss;
}
}

Сущность ОС:

namespace Lang\LanguageBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* OS
*/
class OS
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $osName;
/**
* @var \Doctrine\Common\Collections\Collection
*/
private $tools;
/**
* Constructor
*/
public function __construct()
{
$this->tools = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add tool
*
* @param \Lang\LanguageBundle\Entity\Tool $tool
* @return OS
*/
public function addTool(\Lang\LanguageBundle\Entity\Tool $tool)
{
$this->tools[] = $tool;
return $this;
}

/**
* Remove tools
*
* @param \Lang\LanguageBundle\Entity\Tool $tools
*/
public function removeTool(\Lang\LanguageBundle\Entity\Tool $tools)
{
$this->tools->removeElement($tools);
}

/**
* Get tools
*
* @return \Doctrine\Common\Collections\ArrayCollection
*/
public function getTools()
{
return $this->tools;
}
}

Контроллер инструмента:

public function deleteAction(Request $request, $id)
{
$form = $this->createDeleteForm($id);
$form->handleRequest($request);

if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('LangLanguageBundle:Tool')->find($id);

if (!$entity) {
throw $this->createNotFoundException('Unable to find Tool entity.');
}
//$em->remove($entity);
//$em->flush();
}
return $this->redirect($this->generateUrl('tool'));
}
private function createDeleteForm($id)
{
return $this->createFormBuilder()
->setAction($this->generateUrl('tool_delete', array('id' => $id)))
->setMethod('DELETE')
->add('submit', 'submit', array('label' => 'Delete'))
->getForm()
;
}

В Tool.orm.yml у меня есть следующий код:

manyToMany:
oss:
targetEntity: OS
mappedBy: tools
cascade: [ remove, persist ]

И в OS.orm.yml у меня есть следующий код:

manyToMany:
tools:
targetEntity: Tool
inversedBy: oss
JoinTable:
name: tool_os
joinColumns:
JoinColumn:
name: os_id
referencedColumnName: id
inverseJoinColumns:
JoinColumn:
name: tool_id
referencedColumnName: id

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]