public function testNamedRef() { $referrerTestObj = new ReferrerTestObj(); $referrerNamedPropTestObj = new ReferrerNamedPropTestObj(); $allReferrerRefNamedPropTestObj = new AllReferrerRefNamedPropTestObj(); $referrerTestObj->id = "/functional/referrerTestObj"; $referrerTestObj->name = "referrerTestObj"; $referrerNamedPropTestObj->id = "/functional/referrerNamedPropTestObj"; $referrerNamedPropTestObj->name = "referrerNamedPropTestObj"; $allReferrerRefNamedPropTestObj->id = "/functional/allReferrerRefNamedPropTestObj"; $referrerTestObj->reference = $allReferrerRefNamedPropTestObj; $referrerNamedPropTestObj->namedReference = $allReferrerRefNamedPropTestObj; $this->dm->persist($referrerTestObj); $this->dm->persist($referrerNamedPropTestObj); $this->dm->flush(); $this->dm->clear(); $referenced = $this->dm->find(null, "/functional/allReferrerRefNamedPropTestObj"); $this->assertCount(1, $referenced->referrers); $this->assertEquals("referrerNamedPropTestObj", $referenced->referrers[0]->name); $otherRef = new OtherReferrerTestObj(); $otherRef->id = '/functional/otherObj'; $otherRef->name = 'other ref'; $otherRef->namedReference = $referenced; $this->dm->persist($otherRef); $this->dm->flush(); $this->dm->clear(); $referenced = $this->dm->find(null, "/functional/allReferrerRefNamedPropTestObj"); // the other ref is a different class and should get filtered out $this->assertCount(1, $referenced->referrers); $this->assertEquals("referrerNamedPropTestObj", $referenced->referrers[0]->name); $allReferrers = $this->dm->getReferrers($referenced, null, 'named-reference'); $this->assertCount(2, $allReferrers); }