2 つのエンティティを関連付けたい製品にユーザーを関連付けるには:
http://symfony.com/doc/current/book/doctrine.html#entity-relationships-associations
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="products")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
* You may need to use the full namespace above instead of just User if the
* User entity is not in the same bundle e.g FOS\UserBundle\Entity\User
* the example is just a guess of the top of my head for the fos namespace though
*/
protected $user;
自動更新フィールドについては、lifecyclecallbacks の後かもしれません:
http://symfony.com/doc/current/book/doctrine.html#lifecycle-callbacks
/**
* @ORM\Entity()
* @ORM\HasLifecycleCallbacks()
*/
class Product
{
/**
* @ORM\PreUpdate
*/
public function setCreatedValue()
{
$this->created = new \DateTime();
}
}
編集
このディスカッションでは、エンティティでコンテナーを取得する方法について説明します。この場合、現在のユーザーを編集した製品に関連付ける場合は、security.context を取得してそこからユーザー ID を見つけることができます:
https://groups.google. com/forum/?fromgroups#!topic/symfony2/6scSB0Kgds0
//once you have the container you can get the session
$user= $this->container->get('security.context')->getToken()->getUser();
$updated_at = $user->getId();
たぶんそれがあなたが求めているものですが、エンティティにコンテナを入れるのが良い考えかどうかはわかりませんが、製品コントローラーの更新アクションで製品にユーザーを設定するだけではいけません:
public function updateAction(){
//....
$user= $this->get('security.context')->getToken()->getUser();
$product->setUser($user)
}