Question

I was wondering if it's possible to persist and flush a proxy document.

If we clone a proxy document (don't forget to implement a __clone method to reset the id parameter) and persist and flush will it be insert or not ?

This case might happen if we want copies of documents.

Example documents:

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

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

Usage:

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

This might be a bad example, but it's just to know if this is possible or not.

Edit: For those of you who want to do something similar, it's not working directly but you can force it by using 'onFlush' events

No correct solution

OTHER TIPS

I hit this same question (bug) recently and apparently, you cannot currently persist a proxy document (as per version 1.0.0-beta9). I filed an issue and wrote a simple test case confirming this behavior: https://github.com/doctrine/mongodb-odm/issues/619.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top