Merge branch 'hotfix/#1265-sti-persister-one-to-one-association-notices'
Close #1265
This commit is contained in:
commit
d8d4ec6eb2
@ -90,14 +90,14 @@ class SingleTablePersister extends AbstractEntityInheritancePersister
|
||||
foreach ($assoc['targetToSourceKeyColumns'] as $srcColumn) {
|
||||
$className = isset($assoc['inherited']) ? $assoc['inherited'] : $this->class->name;
|
||||
|
||||
$targetClass = $this->em->getClassMetadata($mapping['targetEntity']);
|
||||
$targetClass = $this->em->getClassMetadata($assoc['targetEntity']);
|
||||
|
||||
$columnList[] = $this->getSelectJoinColumnSQL(
|
||||
$tableAlias,
|
||||
$srcColumn,
|
||||
$className,
|
||||
PersisterHelper::getTypeOfColumn(
|
||||
$mapping['sourceToTargetKeyColumns'][$srcColumn],
|
||||
$assoc['sourceToTargetKeyColumns'][$srcColumn],
|
||||
$targetClass,
|
||||
$this->em
|
||||
)
|
||||
|
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Doctrine\Tests\Models\OneToOneSingleTableInheritance;
|
||||
|
||||
/** @Entity */
|
||||
class Cat extends Pet
|
||||
{
|
||||
const CLASSNAME = __CLASS__;
|
||||
|
||||
/**
|
||||
* @OneToOne(targetEntity="LitterBox")
|
||||
*
|
||||
* @var LitterBox
|
||||
*/
|
||||
public $litterBox;
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace Doctrine\Tests\Models\OneToOneSingleTableInheritance;
|
||||
|
||||
/**
|
||||
* @Entity
|
||||
* @Table(name="one_to_one_single_table_inheritance_litter_box")
|
||||
*/
|
||||
class LitterBox
|
||||
{
|
||||
const CLASSNAME = __CLASS__;
|
||||
|
||||
/** @Id @Column(type="integer") @GeneratedValue(strategy="AUTO") */
|
||||
public $id;
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace Doctrine\Tests\Models\OneToOneSingleTableInheritance;
|
||||
|
||||
/**
|
||||
* @Entity
|
||||
* @Table(name="one_to_one_single_table_inheritance_pet")
|
||||
* @InheritanceType("SINGLE_TABLE")
|
||||
* @DiscriminatorMap({"cat" = "Cat"})
|
||||
*/
|
||||
abstract class Pet
|
||||
{
|
||||
const CLASSNAME = __CLASS__;
|
||||
|
||||
/** @Id @Column(type="integer") @GeneratedValue(strategy="AUTO") */
|
||||
public $id;
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace Doctrine\Tests\ORM\Functional;
|
||||
|
||||
use Doctrine\Tests\Models\ECommerce\ECommerceProduct;
|
||||
use Doctrine\Tests\Models\ECommerce\ECommerceShipping;
|
||||
use Doctrine\ORM\Mapping\AssociationMapping;
|
||||
use Doctrine\ORM\Mapping\ClassMetadata;
|
||||
use Doctrine\ORM\Query;
|
||||
use Doctrine\Tests\Models\OneToOneSingleTableInheritance\Cat;
|
||||
use Doctrine\Tests\Models\OneToOneSingleTableInheritance\LitterBox;
|
||||
use Doctrine\Tests\Models\OneToOneSingleTableInheritance\Pet;
|
||||
use Doctrine\Tests\OrmFunctionalTestCase;
|
||||
|
||||
class OneToOneSingleTableInheritanceTest extends OrmFunctionalTestCase
|
||||
{
|
||||
protected function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->_schemaTool->createSchema([
|
||||
$this->_em->getClassMetadata(Pet::CLASSNAME),
|
||||
$this->_em->getClassMetadata(Cat::CLASSNAME),
|
||||
$this->_em->getClassMetadata(LitterBox::CLASSNAME),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests a unidirectional one-to-one association mapping from an inheritance child class
|
||||
*
|
||||
* @group DDC-3517
|
||||
* @group #1265
|
||||
*/
|
||||
public function testFindFromOneToOneOwningSideJoinedTableInheritance()
|
||||
{
|
||||
$cat = new Cat();
|
||||
$cat->litterBox = new LitterBox();
|
||||
|
||||
$this->_em->persist($cat);
|
||||
$this->_em->persist($cat->litterBox);
|
||||
$this->_em->flush();
|
||||
$this->_em->clear();
|
||||
|
||||
/* @var $foundCat Cat */
|
||||
$foundCat = $this->_em->find(Pet::CLASSNAME, $cat->id);
|
||||
|
||||
$this->assertInstanceOf(Cat::CLASSNAME, $foundCat);
|
||||
$this->assertSame($cat->id, $foundCat->id);
|
||||
$this->assertInstanceOf(LitterBox::CLASSNAME, $foundCat->litterBox);
|
||||
$this->assertSame($cat->litterBox->id, $foundCat->litterBox->id);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user