0

I have entity developer

/**
* Developers
*
* @ORM\Table(name="developers")
* @ORM\Entity(repositoryClass="Artel\CustomerBundle\Entity\Repository\DevelopersRepository")
*/
class Developers extends SUser
{
     /**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\OneToMany(targetEntity="CodeUserReference", mappedBy="developer", cascade={"persist"})
 */
protected $reference_developer;

And Entity CodeUserReference

 /**
  * Coders 24 users
  *
  * @ORM\Table(name="code_user_reference")
  * @ORM\Entity(repositoryClass="Artel\CustomerBundle\Entity\CodeUserReferenceRepository")
  */
  class CodeUserReference
  {
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\ManyToOne(targetEntity="Developers", inversedBy="reference_developer")
 * @ORM\JoinColumn(name="user_talnet_file", nullable = true, referencedColumnName="id")
 * */
protected $developer;

And my questionhow to delete Developer I have error

An exception occurred while executing 'DELETE FROM developers WHERE id = ?' with params [559]:

SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`artel`.`code_user_reference`, CONSTRAINT `FK_E57A030D93D16BFC` FOREIGN KEY (`user_talnet_file`) REFERENCES `developers` (`id`)) 

this is my action

   /**
 * Displays a form to edit an existing Freelancers entity.
 *
 * @Route("/{id}/edit", name="admin_freelancers_edit")
 * @Method("GET")
 * @Template()
 */
public function editAction($id)
{
    $em = $this->getDoctrine()->getManager();
    $entity = $em->getRepository('ArtelCustomerBundle:Developers')->find($id);

    if (!$entity) {
        throw $this->createNotFoundException('Unable to find Freelancers entity.');
    }

    $editForm = $this->createEditForm($entity);
    $deleteForm = $this->createDeleteForm($id);

    return array(
        'entity'      => $entity,
        'edit_form'   => $editForm->createView(),
        'delete_form' => $deleteForm->createView(),
    );
}
    /**
 * Creates a form to delete a Freelancers entity by id.
 *
 * @param mixed $id The entity id
 *
 * @return \Symfony\Component\Form\Form The form
 */
private function createDeleteForm($id)
{
    return $this->createFormBuilder()
        ->setAction($this->generateUrl('admin_freelancers_delete', array('id' => $id)))
        ->setMethod('DELETE')
        ->add('submit', 'submit', array('label' => 'Delete'))
        ->getForm()
    ;
}
    /**
 * Deletes a Freelancers entity.
 *
 * @Route("/{id}", name="admin_freelancers_delete")
 * @Method("DELETE")
 */
public function deleteAction(Request $request, $id)
{
    $form = $this->createDeleteForm($id);
    $form->handleRequest($request);

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


        if (!$entity) {
            throw $this->createNotFoundException('Unable to find Freelancers entity.');
        }

        $em->remove($entity);
        $em->flush();
    }

    return $this->redirect($this->generateUrl('admin_freelancers'));
}

before developer not have field reference_developer and actionwork fine then I add this field and table and now I have developer and developer hame more one or two or five reference and I dont know how to corect developer with his refernce ? Help please

shuba.ivan
  • 3,824
  • 8
  • 49
  • 121

1 Answers1

1

Your issue here is that the developer has existing recorCodeUserReference's. You need to update your developer OneToMany to include cascade "remove".

/**
 * @ORM\OneToMany(targetEntity="CodeUserReference", mappedBy="developer", cascade={"persist", "remove"})
 */
protected $reference_developer;

There is great explaination in here: On delete cascade with doctrine2

Community
  • 1
  • 1
Paul Saunders
  • 278
  • 2
  • 10
  • doctrine:schema:update nedde? code I try doctrine:schema:update Nothing to update - your database is already in sync with the current entity metadata. – shuba.ivan Jul 15 '15 at 12:08