2016-12-24 56 views
1

這是我後實體的一部分:添加當前用戶的Symfony的提交形式

/** 
* @ORM\ManyToOne(targetEntity="User", inversedBy="post") 
* @ORM\JoinColumn(name="user", referencedColumnName="id") 
*/ 
private $user; 

,並從用戶實體:

/** 
* @ORM\OneToMany(targetEntity="Post", mappedBy="user") 
*/ 
private $post; 

我的控制器看起來是這樣的:

$post = new Post(); 

$form = $this->createForm('FreeCycler\UserBundle\Form\PostType', $post); 
$form->handleRequest($request); 

if ($form->isSubmitted() && $form->isValid()) { 
    $post->setUser($this->getUser()); 

    // also tried this: 
    //$post->setUser($this->getUser()->getId()); 

    $em = $this->getDoctrine()->getManager(); 
    $em->persist($post); 
    $em->flush($post); 

    return $this->redirectToRoute('my_post_show', array('id' => $post->getId())); 
} 

帖子被保存到orm,但用戶爲空或爲空。然而,$this->getUser()不爲空,它顯示用戶對象,如果我轉儲它。

+0

很奇怪,請嘗試將線'$後> SETUSER($這個 - >的getUser());'對象創建'$後後=新郵();' – Matteo

+0

我曾嘗試這但是得到了同樣的問題。 – shaNnex

+0

你能告訴我們'Post :: setUser()'方法嗎?並嘗試將'name ='user''重命名爲'name =「user_id」'並更新您的數據庫模式。 – yceruto

回答

1

從flush方法中刪除$post參數。原則不會刷新用戶對象,否則。提供一個實體強制學說只能刷新該實體,而不是其他實體。此外,您的關係是雙向的,因此如果不沖洗$user,它也不起作用。實際上,flush()方法未來可能會從Doctrine中刪除此功能。

只要做$em->flush()

Discussion of this issue on Doctrine's Github repo

相關問題