如何在创建/编辑项目时添加用户ID

时间:2013-04-02 09:33:05

标签: php symfony symfony-2.2

我想将创建/编辑内容的用户的用户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;
}

1 个答案:

答案 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)将成为其中的一部分。