php - Delete Entity with OneToMany -


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 questionhow delete developer have error

an exception occurred while executing 'delete developers id = ?' params [559]:  sqlstate[23000]: integrity constraint violation: 1451 cannot delete or update parent row: foreign key constraint fails (`artel`.`code_user_reference`, constraint `fk_e57a030d93d16bfc` foreign key (`user_talnet_file`) references `developers` (`id`))  

this action

   /**  * displays form edit 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 find freelancers entity.');     }      $editform = $this->createeditform($entity);     $deleteform = $this->createdeleteform($id);      return array(         'entity'      => $entity,         'edit_form'   => $editform->createview(),         'delete_form' => $deleteform->createview(),     ); }     /**  * creates form delete freelancers entity id.  *  * @param mixed $id entity id  *  * @return \symfony\component\form\form 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 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 find freelancers entity.');         }          $em->remove($entity);         $em->flush();     }      return $this->redirect($this->generateurl('admin_freelancers')); } 

before developer not have field reference_developer , actionwork fine add field , table , have developer , developer hame more 1 or 2 or 5 reference , dont know how corect developer refernce ? please

your issue here developer has existing recorcodeuserreference's. need update developer onetomany include cascade "remove".

/**  * @orm\onetomany(targetentity="codeuserreference", mappedby="developer", cascade={"persist", "remove"})  */ protected $reference_developer; 

there great explaination in here: on delete cascade doctrine2


Comments