В моей Gecko.php
я иметь следующую часть:Symfony 2 удаление объект с oneToMany отношения
/**
* @ORM\OneToMany(targetEntity="Weight", mappedBy="geckoId")
*/
private $weights;
и в моем Weight.php
у меня есть это:
/**
* @ORM\ManyToOne(targetEntity="Gecko", inversedBy="weights")
* @ORM\JoinColumn(name="gecko_id", referencedColumnName="id")
*/
private $geckoId;
Мой геккон удалить действие следующим образом:
/**
* Deletes a Gecko entity.
*
* @Route("/{name}", name="gecko_delete")
* @Method("DELETE")
*/
public function deleteAction(Request $request, $name)
{
$form = $this->createDeleteForm($name);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('BreedrGeckoBundle:Gecko')->findOneByName($name);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Gecko entity.');
}
$em->remove($entity);
$em->flush();
}
return $this->redirect($this->generateUrl('gecko'));
}
Когда я нажимаю кнопку удаления в своей форме, я получаю эту ошибку:
An exception occurred while executing 'DELETE FROM Gecko WHERE id = ?' with params [5]:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (
breedr
.weight
, CONSTRAINTFK_615077FC45D556
FOREIGN KEY (gecko_id
) REFERENCESGecko
(id
))
Я не знаю, как исправить эту проблему. Когда в базе данных нет весов для конкретного геккона, они удаляются штрафом, но если есть какие-то веса, он не будет удалять. В идеале я хотел бы быть в состоянии удалить все данные веса в то же время, что геккон удален
Заранее спасибо
Энди
Не знаете, почему кто-то мог бы это сделать, нет ничего плохого в этом вопросе? –
Есть ли причина использовать * gecko * в названии? Gecko - это Firefox-s engi, возможно, это смущает кого-то. Вы можете улучшить название, заменив * gecko * на * entity *. –
Это справедливая точка, только упомянул об этом, так как это моя ситуация :) –