0

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

1 回答 1

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

于 2013-04-02T09:45:14.820 回答