123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- namespace Doctrine\Tests\ORM\Functional\Ticket;
- use Doctrine\ORM\UnitOfWork;
- require_once __DIR__ . '/../../../TestInit.php';
- /**
- * @group DDC-1383
- */
- class DDC1383Test extends \Doctrine\Tests\OrmFunctionalTestCase
- {
- protected function setUp()
- {
- parent::setUp();
- try {
- $this->_schemaTool->createSchema(array(
- $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1383AbstractEntity'),
- $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1383Entity'),
- ));
- } catch(\Exception $ignored) {}
- }
- public function testFailingCase()
- {
- $parent = new DDC1383Entity();
- $child = new DDC1383Entity();
- $child->setReference($parent);
- $this->_em->persist($parent);
- $this->_em->persist($child);
- $id = $child->getId();
- $this->_em->flush();
- $this->_em->clear();
- // Try merging the parent entity
- $child = $this->_em->merge($child);
- $parent = $child->getReference();
- // Parent is not instance of the abstract class
- self::assertTrue($parent instanceof DDC1383AbstractEntity,
- "Entity class is " . get_class($parent) . ', "DDC1383AbstractEntity" was expected');
- // Parent is NOT instance of entity
- self::assertTrue($parent instanceof DDC1383Entity,
- "Entity class is " . get_class($parent) . ', "DDC1383Entity" was expected');
- }
- }
- /**
- * @Entity
- * @InheritanceType("JOINED")
- * @DiscriminatorColumn(name="discr", type="integer")
- * @DiscriminatorMap({1 = "DDC1383Entity"})
- */
- abstract class DDC1383AbstractEntity
- {
- /**
- * @Id
- * @Column(type="integer")
- * @GeneratedValue
- */
- protected $id;
- public function getId()
- {
- return $this->id;
- }
- public function setId($id)
- {
- $this->id = $id;
- }
- }
- /**
- * @Entity
- */
- class DDC1383Entity extends DDC1383AbstractEntity
- {
- /**
- * @ManyToOne(targetEntity="DDC1383AbstractEntity")
- */
- protected $reference;
- public function getReference()
- {
- return $this->reference;
- }
- public function setReference(DDC1383AbstractEntity $reference)
- {
- $this->reference = $reference;
- }
- }
|