public function testManyTwoDifferentObjectrefs()
{
$refManyTestObj = new RefManyTestObj();
$refManyTestObj->id = "/functional/refManyTestObj";
$max = 5;
for ($i = 0; $i < $max; $i++) {
$newRefRefTestObj = new RefRefTestObj();
$newRefRefTestObj->id = "/functional/refRefTestObj{$i}";
$newRefRefTestObj->name = "refRefTestObj{$i}";
$refManyTestObj->references[] = $newRefRefTestObj;
}
$this->dm->persist($refManyTestObj);
$this->dm->flush();
$this->dm->clear();
$documents = array();
$hashs = array();
for ($i = 0; $i < $max; $i++) {
$doc = $this->dm->find($this->referencedType, "/functional/refRefTestObj{$i}");
$documents[] = $doc;
$hashs[] = spl_object_hash($doc);
}
asort($hashs);
$refDocuments = array();
$refHashs = array();
$refDocuments = $this->dm->find($this->referrerManyType, "/functional/refManyTestObj")->references;
foreach ($refDocuments as $refDoc) {
$refHashs[] = spl_object_hash($refDoc);
}
asort($refHashs);
$tmp = array_diff($hashs, $refHashs);
$this->assertTrue(empty($tmp));
$i = 0;
foreach ($refDocuments as $refDocument) {
$refDocument->name = "new name {$i}";
$i++;
}
$this->assertEquals(5, $i);
$this->dm->flush();
$i = 0;
foreach ($documents as $document) {
$this->assertEquals("new name {$i}", $document->name);
$i++;
}
$this->assertEquals(5, $i);
}