我想在另一個實體的設置方法中設置登錄的用戶。例如,我有實體Article和User(用戶是FOSUser實體)。我想將當前用戶設置爲文章的作者。用FOSUserBundle在另一個實體中設置登錄的用戶
在文章的實體,我寫:
/**
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\User", inversedBy="articles")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
/**
* Set user
*
* @param \UserBundle\Entity\User $user
* @return Article
*/
public function setUser(\UserBundle\Entity\User $user = null)
{
//This line is the problem
$this->user = $this->container->get('security.context')->getToken()->getUser();
return $this;
}
我想從容器中的用戶,但是當我執行保存,設定值是零。我在控制器中測試該行,並且成功獲取當前用戶。也許在一個實體內獲取登錄用戶的方法是不同的?
給出的答案在控制器工作。您也可以在Doctrine生命週期事件中進行設置,並自動完成,而不必手動設置。 –