1

我正在尝试将当前 user_id 自动添加到 created_by 或 updated_by 字段中。但我似乎无法将当前的 user_id 放入另一个表的实体中。我正在使用 FOSUserBundle....

/**
* @ORM\PrePersist
 */
public function setCreatedByValue()
{
    if(!$this->getCreatedBy())
    {
        $user= $this->container->get('security.context')->getToken()->getUser();
        $this->created_by = $user->getId();
    }
}

这会引发一个未定义的属性:.....容器错误:-(

如何访问当前用户 ID?

谢谢你的帮助。

4

1 回答 1

3

您的实体没有对容器的任何引用。这是$this->container从哪里来的?不知从何而来。

有很多方法可以解决问题,但最好实现你需要的东西而不是解决你的问题:)

所以我会建议一个 Doctrine 监听器,它会在createdBy每次创建实体时修改值。

其实它已经存在了:https ://github.com/KnpLabs/DoctrineBehaviors#blameable

看看实现:https ://github.com/KnpLabs/DoctrineBehaviors/blob/master/src/Knp/DoctrineBehaviors/ORM/Blameable/BlameableListener.php#L151

于 2013-07-01T07:15:44.233 回答