2013-07-01 61 views
0

我試圖自動將當前user_id添加到created_by或updated_by字段中。 但我似乎無法獲得當前的user_id到另一個表的實體。 我使用FOSUserBundle ....在Symfony 2中自動更新created_by和updated_by值

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

這將拋出一個未定義的屬性:?.....集裝箱錯誤:-(

如何訪問當前用戶ID

感謝您的幫助。

回答

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

+0

我可能要對工作一段時間,真的不明白這一點。 – ldrocks

+0

是什麼?你能更清楚嗎? – Florian

+0

我對symfony不是很有經驗。對我來說似乎很複雜:-) – ldrocks