我想将创建/编辑内容的用户的用户ID存储到数据库中。我已经创建了实体。
如何将控制器中的用户字段添加到实体
此时我有什么改变
$entity = new Product();
$form = $this->createForm(new ProductType(), $entity);
$form->bind($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
产品实体的用户部分
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="products")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
/**
* Set user
*
* @param \CJ\BusinessBundle\Entity\User $user
* @return Product
*/
public function setUser(\CJ\BusinessBundle\Entity\User $user = null)
{
$this->user = $user;
return $this;
}
答案 0 :(得分:3)
您可以使用$this->get('security.context')->getToken()->getUser()
获得当前用户。
然后在声明您的实体后,您将添加用户或user_id。
所以..
$user = $this->get('security.context')->getToken()->getUser();
$entity = new Product();
$entity->setUser($user);
// or $entity->setUserid($user->getId()) or maybe something
// else depending on your entity
然后,当您使用实体创建表单时,用户(或用户ID)将成为其中的一部分。