我有两个实体,Post和Post \ Version。我进行了设置,以便在Post实体中自动处理版本控制,因此开发人员不必手动使用Post \ Version。它不使用EntityManager,只是一点反思......这样可以吗?
<?php
public function setContent($content)
{
$this->_setVersionValue('content', $content);
}
private function _setVersionValue($property, $value)
{
// get reflection property
$version = clone $this->getActiveVersion();
$refl = new \ReflectionProperty($version, $property);
$refl->setAccessible(true);
// update value
$version->setCreatedBy($this->getCurrentUser());
$refl->setValue($version, $value);
// clear ID
$reflProp = new \ReflectionProperty($version, 'id');
$reflProp->setAccessible(true);
$reflProp->setValue($version, null);
// set to new version
$this->setActiveVersion($version);
}
Post仅存储对最新版本的引用。版本具有对它们所属的帖子的反向引用。
答案 0 :(得分:1)
我认为来自官方博客的A re-usable Versionable Behavior for Doctrine2在最终使用中更容易。此外,它更容易适应其他实体。
PS。 Post
和PostVersion
都应位于同一名称空间中(例如。MyProject\Entity\Blog
)
答案 1 :(得分:0)