drtoclr046994545 2015-07-13 11:32
浏览 43

设置实体OneToOne

I create entity Developer and TalentFile, and I want for one developer have one file (Cv), when I set entity I 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 to find a 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 I have user_talnet_file=Null why? must be Id developer? And want to be,if developer have Cv and want another Cv in DB not create new entity Talent_files, update it. Help please

  • 写回答

1条回答 默认 最新

  • doucheng4094 2015-07-13 12:34
    关注

    I solved my pdoblem like 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();
    
    评论

报告相同问题?

悬赏问题

  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了