2012-01-13 09:37:59 +04:00
< ? 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 (
2013-08-22 07:39:40 +04:00
" SELECT COUNT(*) FROM entity1_entity2 t WHERE t.parent = ? " ,
2012-01-13 09:37:59 +04:00
$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
{
}