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から来たのですか?どこからともなく。

問題を解決するには多くの方法がありますが、問題を修正するよりも必要なものを実装する方がよいでしょう :)

したがってcreatedBy、エンティティが作成されるたびに値を変更する Doctrine リスナーをお勧めします。

実際、すでに存在しています: 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 に答える