123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
- namespace Doctrine\Tests\ORM\Functional\Ticket;
- /**
- * @group DDC-1595
- * @group DDC-1596
- */
- class DDC1595Test extends \Doctrine\Tests\OrmFunctionalTestCase
- {
- public function setUp()
- {
- parent::setUp();
- $this->_em->getConnection()->getConfiguration()->setSQLLogger(new \Doctrine\DBAL\Logging\DebugStack);
- $this->_schemaTool->createSchema(array(
- $this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1595BaseInheritance'),
- $this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1595InheritedEntity1'),
- $this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1595InheritedEntity2'),
- ));
- }
- public function testIssue()
- {
- $e1 = new DDC1595InheritedEntity1();
- $this->_em->persist($e1);
- $this->_em->flush();
- $this->_em->clear();
- $sqlLogger = $this->_em->getConnection()->getConfiguration()->getSQLLogger();
- $repository = $this->_em->getRepository(__NAMESPACE__ . '\\DDC1595InheritedEntity1');
- $entity1 = $repository->find($e1->id);
- // DDC-1596
- $this->assertSQLEquals(
- "SELECT t0.id AS id1, t0.type FROM base t0 WHERE t0.id = ? AND t0.type IN ('Entity1')",
- $sqlLogger->queries[count($sqlLogger->queries)]['sql']
- );
- $entities = $entity1->getEntities()->getValues();
- $this->assertSQLEquals(
- "SELECT t0.id AS id1, t0.type FROM base t0 INNER JOIN entity1_entity2 ON t0.id = entity1_entity2.item WHERE entity1_entity2.parent = ? AND t0.type IN ('Entity2')",
- $sqlLogger->queries[count($sqlLogger->queries)]['sql']
- );
- $this->_em->clear();
- $entity1 = $repository->find($e1->id);
- $entities = $entity1->getEntities()->count();
- $this->assertSQLEquals(
- "SELECT COUNT(*) FROM entity1_entity2 t WHERE parent = ?",
- $sqlLogger->queries[count($sqlLogger->queries)]['sql']
- );
- }
- }
- /**
- * @Entity
- * @Table(name="base")
- *
- * @InheritanceType("SINGLE_TABLE")
- * @DiscriminatorColumn(name="type", type="string")
- * @DiscriminatorMap({
- * "Entity1" = "DDC1595InheritedEntity1",
- * "Entity2" = "DDC1595InheritedEntity2"
- * })
- */
- abstract class DDC1595BaseInheritance
- {
- /**
- * @Id @GeneratedValue
- * @Column(type="integer")
- *
- * @var integer
- */
- public $id;
- }
- /**
- * @Entity
- * @Table(name="entity1")
- */
- class DDC1595InheritedEntity1 extends DDC1595BaseInheritance
- {
- /**
- * @ManyToMany(targetEntity="DDC1595InheritedEntity2", fetch="EXTRA_LAZY")
- * @JoinTable(name="entity1_entity2",
- * joinColumns={@JoinColumn(name="parent", referencedColumnName="id")},
- * inverseJoinColumns={@JoinColumn(name="item", referencedColumnName="id")}
- * )
- */
- protected $entities;
- public function getEntities()
- {
- return $this->entities;
- }
- }
- /**
- * @Entity
- * @Table(name="entity2")
- */
- class DDC1595InheritedEntity2 extends DDC1595BaseInheritance
- {
- }
|