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
Post a Comment