Doctrine Mongodb ODM持久化并刷新代理文档

时间:2012-11-02 13:44:13

标签: proxy flush persist doctrine-odm proxies

我想知道是否可以保留并刷新代理文档。

如果我们克隆一个代理文档(不要忘记实现一个__clone方法来重置id参数)并且持久化和刷新它是否会插入?

如果我们想要文件副本,可能会发生这种情况。

示例文件:

// User.php
class User
{
 // @ReferenceOne(targetDocument="Group")
 private $group;
}

// Group.php
class Group
{
  public function __clone()
  {
     if ($this->id) {
       $this->id = null;
     }
  }
  //....
}

用法:

$user = $dm->createQueryBuilder('User')->getQuery()->getSingleResult();
$group = $user->getGroup(); // $group is a proxy document
$newGroup = clone $group;
$dm->persist($newGroup);
$dm->flush();

这可能是一个不好的例子,但只是要知道这是否可能。

编辑:对于那些想要做类似事情的人来说,它不是直接工作但你可以通过使用'onFlush'事件强制它

1 个答案:

答案 0 :(得分:0)

我最近遇到了同样的问题(bug),显然,你不能目前持有代理文档(根据版本1.0.0-beta9)。我提交了一个问题并写了一个简单的测试用例来确认这种行为:https://github.com/doctrine/mongodb-odm/issues/619