DDC698Test.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace Doctrine\Tests\ORM\Functional\Ticket;
  3. use DateTime;
  4. require_once __DIR__ . '/../../../TestInit.php';
  5. class DDC698Test extends \Doctrine\Tests\OrmFunctionalTestCase
  6. {
  7. protected function setUp()
  8. {
  9. parent::setUp();
  10. try {
  11. $this->_schemaTool->createSchema(array(
  12. $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC698Role'),
  13. $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC698Privilege')
  14. ));
  15. } catch(\Exception $e) {
  16. }
  17. }
  18. public function testTicket()
  19. {
  20. $qb = $this->_em->createQueryBuilder();
  21. $qb->select('p', 'r')
  22. ->from(__NAMESPACE__ . '\DDC698Privilege', 'p')
  23. ->leftJoin('p.roles', 'r');
  24. $sql = $qb->getQuery()->getSQL();
  25. $this->assertEquals(
  26. strtolower('SELECT p0_.privilegeID AS privilegeID0, p0_.name AS name1, r1_.roleID AS roleID2, r1_.name AS name3, r1_.shortName AS shortName4 FROM Privileges p0_ LEFT JOIN RolePrivileges r2_ ON p0_.privilegeID = r2_.privilegeID LEFT JOIN Roles r1_ ON r1_.roleID = r2_.roleID'),
  27. strtolower($sql)
  28. );
  29. }
  30. }
  31. /**
  32. *
  33. * @Table(name="Roles")
  34. * @Entity
  35. */
  36. class DDC698Role
  37. {
  38. /**
  39. * @Id @Column(name="roleID", type="integer")
  40. * @GeneratedValue(strategy="AUTO")
  41. *
  42. */
  43. protected $roleID;
  44. /**
  45. * @Column(name="name", type="string", length=45)
  46. *
  47. *
  48. */
  49. protected $name;
  50. /**
  51. * @Column(name="shortName", type="string", length=45)
  52. *
  53. *
  54. */
  55. protected $shortName;
  56. /**
  57. * @ManyToMany(targetEntity="DDC698Privilege", inversedBy="roles")
  58. * @JoinTable(name="RolePrivileges",
  59. * joinColumns={@JoinColumn(name="roleID", referencedColumnName="roleID")},
  60. * inverseJoinColumns={@JoinColumn(name="privilegeID", referencedColumnName="privilegeID")}
  61. * )
  62. */
  63. protected $privilege;
  64. }
  65. /**
  66. *
  67. * @Table(name="Privileges")
  68. * @Entity()
  69. */
  70. class DDC698Privilege
  71. {
  72. /**
  73. * @Id @Column(name="privilegeID", type="integer")
  74. * @GeneratedValue(strategy="AUTO")
  75. *
  76. */
  77. protected $privilegeID;
  78. /**
  79. * @Column(name="name", type="string", length=45)
  80. *
  81. *
  82. */
  83. protected $name;
  84. /**
  85. * @ManyToMany(targetEntity="DDC698Role", mappedBy="privilege")
  86. */
  87. protected $roles;
  88. }