123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?php
- namespace Doctrine\Tests\ORM\Functional\Ticket;
- use DateTime;
- require_once __DIR__ . '/../../../TestInit.php';
- class DDC633Test extends \Doctrine\Tests\OrmFunctionalTestCase
- {
- protected function setUp()
- {
- parent::setUp();
- try {
- $this->_schemaTool->createSchema(array(
- $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC633Patient'),
- $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC633Appointment'),
- ));
- } catch(\Exception $e) {
- }
- }
- /**
- * @group DDC-633
- * @group DDC-952
- * @group DDC-914
- */
- public function testOneToOneEager()
- {
- $app = new DDC633Appointment();
- $pat = new DDC633Patient();
- $app->patient = $pat;
- $pat->appointment = $app;
- $this->_em->persist($app);
- $this->_em->persist($pat);
- $this->_em->flush();
- $this->_em->clear();
- $eagerAppointment = $this->_em->find(__NAMESPACE__ . '\DDC633Appointment', $app->id);
- // Eager loading of one to one leads to fetch-join
- $this->assertNotInstanceOf('Doctrine\ORM\Proxy\Proxy', $eagerAppointment->patient);
- $this->assertTrue($this->_em->contains($eagerAppointment->patient));
- }
- /**
- * @group DDC-633
- * @group DDC-952
- */
- public function testDQLDeferredEagerLoad()
- {
- for ($i = 0; $i < 10; $i++) {
- $app = new DDC633Appointment();
- $pat = new DDC633Patient();
- $app->patient = $pat;
- $pat->appointment = $app;
- $this->_em->persist($app);
- $this->_em->persist($pat);
- }
- $this->_em->flush();
- $this->_em->clear();
- $appointments = $this->_em->createQuery("SELECT a FROM " . __NAMESPACE__ . "\DDC633Appointment a")->getResult();
- foreach ($appointments AS $eagerAppointment) {
- $this->assertInstanceOf('Doctrine\ORM\Proxy\Proxy', $eagerAppointment->patient);
- $this->assertTrue($eagerAppointment->patient->__isInitialized__, "Proxy should already be initialized due to eager loading!");
- }
- }
- }
- /**
- * @Entity
- */
- class DDC633Appointment
- {
- /** @Id @Column(type="integer") @GeneratedValue */
- public $id;
- /**
- * @OneToOne(targetEntity="DDC633Patient", inversedBy="appointment", fetch="EAGER")
- */
- public $patient;
- }
- /**
- * @Entity
- */
- class DDC633Patient
- {
- /** @Id @Column(type="integer") @GeneratedValue */
- public $id;
- /**
- * @OneToOne(targetEntity="DDC633Appointment", mappedBy="patient")
- */
- public $appointment;
- }
|