1
0
mirror of synced 2024-12-15 15:46:02 +03:00
doctrine2/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1595Test.php

111 lines
2.9 KiB
PHP

<?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->assertEquals(
"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->assertEquals(
"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->assertEquals(
"SELECT COUNT(*) FROM entity1_entity2 t WHERE t.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
{
}