Вместо orphanRemoval
вам следует использовать onDelete=CASCADE
.
Поскольку Candidature::annonce
не может быть ложным, у вас никогда не будет сирот, это невозможно.
Все, что вам нужно, этоудалить каждую запись Candidature
из БД при удалении связанной записи Annonce
.
И удаление одной Candidature
не повлияет на родительскую Annonce
таким образом.
/**
* @ORM\OneToMany(targetEntity="Candidature", mappedBy="annonce" )
*/
private $candidatures;
/**
* @ORM\ManyToOne(targetEntity="Annonce", inversedBy="candidatures" )
* @ORM\JoinColumn(onDelete="CASCADE", nullable=false)
*/
private $annonce;
С другой стороны, я бы предложил сделать правильное supprimerAction()
.
По крайней мере что-то вроде этого:
public function supprimerAction(Annonce $annonce) {
$em=$this->getDoctrine()->getManager();
$em->remove($annonce);
$em->flush();
return $this->redirectToRoute("mesAnnonces");
}
public function supprimerAction(Candidature $candidature) {
$em=$this->getDoctrine()->getManager();
$em->remove($candidature);
$em->flush();
return $this->redirectToRoute("mesCandidatures");
}
Хотя, даже этонедостаточно.
В этом нет формы, нет также токена CSRF.
Это было бы более безопасно:
public function supprimerAction(Request $request, Annonce $annonce) {
$form=$this->createFormBuilder()
->setAction($this->generateUrl('annonce_supprimer', array('id'=>$annonce->getId())))
->setMethod('DELETE')
->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$em=$this->getDoctrine()->getManager();
$em->remove($annonce);
$em->flush();
return $this->redirectToRoute("mesAnnonces");
}
return $this->render('annonce_supprimer.html.twig', array(
'annonce'=>$annonce,
'form'=>$form,
));
}
public function supprimerAction(Request $request, Candidature $candidature) {
$form=$this->createFormBuilder()
->setAction($this->generateUrl('annonce_supprimer', array('id'=>$candidature->getId())))
->setMethod('DELETE')
->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$em=$this->getDoctrine()->getManager();
$em->remove($candidature);
$em->flush();
return $this->redirectToRoute("mesCandidatures");
}
return $this->render('candidature_supprimer.html.twig', array(
'candidature'=>$candidature,
'form'=>$form,
));
}