У меня есть две сущности: 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);
}
Почта хранит только ссылку на последнюю версию. Версии имеют обратную ссылку на пост, которому они принадлежат.