有关实体symfony的用户信息

时间:2016-03-31 13:47:27

标签: symfony entities

我不久前开始使用symfony,此刻我正在努力解决这个问题:

我决定让#34;谁"实体层面的信息,所以我为每个实体定义了这4个额外的参数:

/**
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\User")
 * @ORM\JoinColumn(name="created_by", referencedColumnName="id")
 */
private $createdBy;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="created_at", type="datetime")
 */
private $createdAt;

/**
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\User")
 * @ORM\JoinColumn(name="updated_by", referencedColumnName="id")
 */
private $updatedBy;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="updated_at", type="datetime", nullable=true)
 */
private $updatedAt;

我现在的问题是我应该在哪里以及如何填充createdBy和updatedBy。 ATM我在我的控制器中执行此操作,然后继续访问数据库。当一个实体是另一个实体的属性时,我遇到了一个问题,并且假设我有一个名为Post的实体,它具有Document类型的属性图像,实体Post和Document都有" who" Post中有关它们和图像属性的信息定义如下:

/**
 * @var array
 *  
 * @ORM\ManyToMany(targetEntity="Nisand\DocumentsBundle\Entity\Document", cascade={"persist"})
 * @ORM\JoinTable(name="blog_documents",
 *      joinColumns={@ORM\JoinColumn(name="post_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="document_id", referencedColumnName="id")}
 *      )
 */
private $images;

For Post假设我在持久化之前在控制器中设置了createdBy但是在Document上该工作原理应该如何导致级联规则保持不变?

你们如何处理你的应用程序" who"列?

1 个答案:

答案 0 :(得分:1)

试用此捆绑包:StofDoctrineExtensionsBundle并使用Blameable扩展名。

您需要使用BlameableListener设置当前用户。它将涵盖您的用例。

Blameable的文档位于:https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/blameable.md