DDC493Test.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace Doctrine\Tests\ORM\Functional\Ticket;
  3. require_once __DIR__ . '/../../../TestInit.php';
  4. class DDC493Test extends \Doctrine\Tests\OrmFunctionalTestCase
  5. {
  6. protected function setUp()
  7. {
  8. parent::setUp();
  9. $this->_schemaTool->createSchema(array(
  10. $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC493Customer'),
  11. $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC493Distributor'),
  12. $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC493Contact')
  13. ));
  14. }
  15. public function testIssue()
  16. {
  17. $q = $this->_em->createQuery("select u, c.data from ".__NAMESPACE__."\\DDC493Distributor u JOIN u.contact c");
  18. $this->assertEquals(
  19. strtolower('SELECT d0_.id AS id0, d1_.data AS data1, d0_.discr AS discr2, d0_.contact AS contact3 FROM DDC493Distributor d2_ INNER JOIN DDC493Customer d0_ ON d2_.id = d0_.id INNER JOIN DDC493Contact d1_ ON d0_.contact = d1_.id'),
  20. strtolower($q->getSQL())
  21. );
  22. }
  23. }
  24. /**
  25. * @Entity
  26. * @InheritanceType("JOINED")
  27. * @DiscriminatorColumn(name="discr", type="string")
  28. * @DiscriminatorMap({"distributor" = "DDC493Distributor", "customer" = "DDC493Customer"})
  29. */
  30. class DDC493Customer {
  31. /**
  32. * @Id
  33. * @Column(type="integer")
  34. * @GeneratedValue(strategy="AUTO")
  35. */
  36. public $id;
  37. /**
  38. * @OneToOne(targetEntity="DDC493Contact", cascade={"remove","persist"})
  39. * @JoinColumn(name="contact", referencedColumnName="id")
  40. */
  41. public $contact;
  42. }
  43. /**
  44. * @Entity
  45. */
  46. class DDC493Distributor extends DDC493Customer {
  47. }
  48. /**
  49. * @Entity
  50. */
  51. class DDC493Contact
  52. {
  53. /**
  54. * @Id
  55. * @Column(type="integer")
  56. * @GeneratedValue(strategy="AUTO")
  57. */
  58. public $id;
  59. /** @Column(type="string") */
  60. public $data;
  61. }