Как добавить идентификатор пользователя при создании / редактировании элемента

Я хочу сохранить идентификатор пользователя, который создает / редактирует контент в базе данных. Я уже создал сущность.

Как добавить пользовательское поле в моем контроллере к сущности

Что я могу изменить на этом этапе

    $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 ответ

Решение

Вы бы получить текущий пользователь, используя $this->get('security.context')->getToken()->getUser(),

Затем, сразу после объявления вашей сущности, вы добавите user или 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

Когда вы затем создаете свою форму, используя сущность, пользователь (или идентификатор пользователя) будет ее частью.

Другие вопросы по тегам