在Symfony 2中自动更新created_by和updated_by值

时间:2013-07-01 06:40:02

标签: symfony doctrine fosuserbundle

我正在尝试将当前的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();
    }
}

这会抛出一个Undefined属性:.....容器错误: - (

如何访问当前用户ID?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您的实体没有任何对容器的引用。这$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