可接受的实体逻辑?

时间:2011-01-18 04:01:44

标签: php doctrine-orm

我有两个实体,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仅存储对最新版本的引用。版本具有对它们所属的帖子的反向引用。

2 个答案:

答案 0 :(得分:1)

我认为来自官方博客的A re-usable Versionable Behavior for Doctrine2在最终使用中更容易。此外,它更容易适应其他实体。

PS。 PostPostVersion都应位于同一名称空间中(例如。MyProject\Entity\Blog

答案 1 :(得分:0)