php - Set entity OneToOne -


i create entity developer , talentfile, , want 1 developer have 1 file (cv), when set entity have filed null

/** * developers * * @orm\table(name="developers") * @orm\entity(repositoryclass="artel\profilebundle\entity\developerrepository") */ class developer  /**  * @var integer  *  * @orm\column(name="id", type="integer")  * @orm\id  * @orm\generatedvalue(strategy="auto")  */ protected $id; /**  * @orm\onetoone(targetentity="talentfiles", mappedby="developer", cascade={"persist"})  */ protected $talent_file; 

and entity:

/**  * talent_files  *  * @orm\table(name="talent_files")  * @orm\entity  */  class talentfiles { /**  * @var integer  *  * @orm\column(name="id", type="integer")  * @orm\id  * @orm\generatedvalue(strategy="auto")  */ private $id; /**  * @orm\onetoone(targetentity="developer", inversedby="talent_file")  * @orm\joincolumn(name="user_talnet_file", nullable = true, referencedcolumnname="id")  * */ protected $developer; 

this action:

  public function cvuploadallaction($id) {      $em = $this->getdoctrine()->getmanager();     $request = $this->get('request');     $developer = $em->getrepository('artelprofilebundle:developer')->findonebyid($id);      if (! $developer) {         throw $this->createnotfoundexception('unable find profile.');     }      $cv = $developer->getcvdiruri();      if ($cv && file_exists($cv)) {         unlink($cv);     }      $form = $this->createform(new developerallcvtype(), array());      if ($request->ismethod('post')) {          $form->bind($request);         if ($form->isvalid()) {              $data = $form->getdata();              $uploader = $this->get('artel.profile.file_uploader');             $path = $uploader->uploadfile($data['photo']);             $developer->setcvdiruri($path['url']);              $content = shell_exec('/usr/bin/antiword '.'chmod o+r /var/www/aog-code/web/'.$path['url']);              if ($data['photo']->getclientmimetype() == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') {                  $content = $this->get('parse_docx')->read_file_docx('/var/www/aog-code/web/'.$path['url']);              } elseif ($data['photo']->getclientmimetype() == 'application/pdf') {                  $content = $this->get('parse_pdf')->parse('/var/www/aog-code/web/'.$path['url']);              } else {                 $content = $this->get('parse_doc')->parse('/var/www/aog-code/web/'.$path['url']);              }              $url = sprintf(                 '%s%s',                 $this->container->getparameter('acme_storage.amazon_s3.base_url'),                 $this->getphotouploader()->uploadfromurl($path['url'])             );              $talent_files = new talentfiles();             $talent_files->setactive('yes')                          ->settype($data['photo']->getclientmimetype())                          ->setcontent($content)                          ->setuserid($developer->getid())                          ->setfilepath($url)                          ->settalentid($developer->getid());              $em->persist($talent_files);             $em->flush();              $developer->settextcv($content);             $developer->setcvuri($url);             $em->flush();              return $this->redirect($this->generateurl('artel_profile_homepage', array('id' => $id)).'#cv');         }     } 

and inmy db have user_talnet_file=null why? must id developer? , want be,if developer have cv , want cv in db not create new entity talent_files, update it. please

i solved pdoblem this:

                $talent_file = $developer->gettalentfile();             if (!empty($talent_file))             {                 $talent_file                     ->setactive('yes')                     ->settype($data['photo']->getclientmimetype())                     ->setcontent($content)                     ->setuserid($developer->getid())                     ->setfilepath($url)                     ->settalentid($developer->getid())                     ->setdeveloper($developer);                 $em->persist($talent_file);                 $em->flush();             }             else             {                 $talent_files = new talentfiles();                 $talent_files->setactive('yes')                     ->settype($data['photo']->getclientmimetype())                     ->setcontent($content)                     ->setuserid($developer->getid())                     ->setfilepath($url)                     ->settalentid($developer->getid())                     ->setdeveloper($developer);                 $em->persist($talent_files);                 $em->flush();              }              $developer->settextcv($content);             $developer->setcvuri($url);             $em->flush(); 

Comments