我不久前开始使用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"列?
答案 0 :(得分:1)
试用此捆绑包:StofDoctrineExtensionsBundle并使用Blameable
扩展名。
您需要使用BlameableListener
设置当前用户。它将涵盖您的用例。
Blameable
的文档位于:https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/blameable.md