3 namespace Doctrine\Tests\ORM\Functional\Ticket;
5 require_once __DIR__ . '/../../../TestInit.php';
7 class DDC237Test extends \Doctrine\Tests\OrmFunctionalTestCase
9 protected function setUp()
12 $this->_schemaTool->createSchema(array(
13 $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC237EntityX'),
14 $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC237EntityY'),
15 $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC237EntityZ')
19 public function testUninitializedProxyIsInitializedOnFetchJoin()
21 $x = new DDC237EntityX;
22 $y = new DDC237EntityY;
23 $z = new DDC237EntityZ;
32 $this->_em->persist($x);
33 $this->_em->persist($y);
34 $this->_em->persist($z);
39 $x2 = $this->_em->find(get_class($x), $x->id); // proxy injected for Y
40 $this->assertInstanceOf('Doctrine\ORM\Proxy\Proxy', $x2->y);
41 $this->assertFalse($x2->y->__isInitialized__);
43 // proxy for Y is in identity map
45 $z2 = $this->_em->createQuery('select z,y from ' . get_class($z) . ' z join z.y y where z.id = ?1')
46 ->setParameter(1, $z->id)
48 $this->assertInstanceOf('Doctrine\ORM\Proxy\Proxy', $z2->y);
49 $this->assertTrue($z2->y->__isInitialized__);
50 $this->assertEquals('Y', $z2->y->data);
51 $this->assertEquals($y->id, $z2->y->id);
53 // since the Y is the same, the instance from the identity map is
54 // used, even if it is a proxy.
56 $this->assertNotSame($x, $x2);
57 $this->assertNotSame($z, $z2);
58 $this->assertSame($z2->y, $x2->y);
59 $this->assertInstanceOf('Doctrine\ORM\Proxy\Proxy', $z2->y);
66 * @Entity @Table(name="ddc237_x")
71 * @Id @Column(type="integer") @GeneratedValue
75 * @Column(type="string")
79 * @OneToOne(targetEntity="DDC237EntityY")
80 * @JoinColumn(name="y_id", referencedColumnName="id")
86 /** @Entity @Table(name="ddc237_y") */
90 * @Id @Column(type="integer") @GeneratedValue
94 * @Column(type="string")
99 /** @Entity @Table(name="ddc237_z") */
102 /** @Id @Column(type="integer") @GeneratedValue */
104 /** @Column(type="string") */
108 * @OneToOne(targetEntity="DDC237EntityY")
109 * @JoinColumn(name="y_id", referencedColumnName="id")