我想在另一个实体的设置方法中设置登录的用户。例如,我有实体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生命周期事件中进行设置,并自动完成,而不必手动设置。 –