Doctrine\Tests\ODM\PHPCR\Functional\ReferenceTest::testManyTwoDifferentObjectrefs PHP Метод

testManyTwoDifferentObjectrefs() публичный Метод

    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);
    }