3 namespace Doctrine\Tests\ORM\Functional;
5 use Doctrine\ORM\Query;
7 require_once __DIR__ . '/../../TestInit.php';
10 * Functional tests for the Single Table Inheritance mapping strategy.
12 * @author Benjamin Eberlei <kontakt@beberlei.de>
14 class OrderedJoinedTableInheritanceCollectionTest extends \Doctrine\Tests\OrmFunctionalTestCase
16 protected function setUp() {
19 $this->_schemaTool->createSchema(array(
20 $this->_em->getClassMetadata('Doctrine\Tests\ORM\Functional\OJTIC_Pet'),
21 $this->_em->getClassMetadata('Doctrine\Tests\ORM\Functional\OJTIC_Cat'),
22 $this->_em->getClassMetadata('Doctrine\Tests\ORM\Functional\OJTIC_Dog'),
24 } catch (\Exception $e) {
25 // Swallow all exceptions. We do not test the schema tool here.
28 $dog = new OJTIC_Dog();
31 $dog1 = new OJTIC_Dog();
32 $dog1->name = "Zampa";
33 $dog2 = new OJTIC_Dog();
39 $dog->children[] = $dog1;
40 $dog->children[] = $dog2;
42 $this->_em->persist($dog);
43 $this->_em->persist($dog1);
44 $this->_em->persist($dog2);
49 public function testOrderdOneToManyCollection()
51 $poofy = $this->_em->createQuery("SELECT p FROM Doctrine\Tests\ORM\Functional\OJTIC_Pet p WHERE p.name = 'Poofy'")->getSingleResult();
53 $this->assertEquals('Aari', $poofy->children[0]->getName());
54 $this->assertEquals('Zampa', $poofy->children[1]->getName());
58 $result = $this->_em->createQuery(
59 "SELECT p, c FROM Doctrine\Tests\ORM\Functional\OJTIC_Pet p JOIN p.children c WHERE p.name = 'Poofy'")
62 $this->assertEquals(1, count($result));
65 $this->assertEquals('Aari', $poofy->children[0]->getName());
66 $this->assertEquals('Zampa', $poofy->children[1]->getName());
72 * @InheritanceType("JOINED")
73 * @DiscriminatorColumn(name="discr", type="string")
75 * "cat" = "OJTIC_Cat",
76 * "dog" = "OJTIC_Dog"})
78 abstract class OJTIC_Pet
82 * @column(type="integer")
83 * @generatedValue(strategy="AUTO")
94 * @ManyToOne(targetEntity="OJTIC_PET")
99 * @OneToMany(targetEntity="OJTIC_Pet", mappedBy="mother")
100 * @OrderBy({"name" = "ASC"})
105 * @ManyToMany(targetEntity="OJTIC_Pet")
106 * @JoinTable(name="OTJIC_Pet_Friends",
107 * joinColumns={@JoinColumn(name="pet_id", referencedColumnName="id")},
108 * inverseJoinColumns={@JoinColumn(name="friend_id", referencedColumnName="id")})
109 * @OrderBy({"name" = "ASC"})
113 public function getName()
122 class OJTIC_Cat extends OJTIC_Pet
130 class OJTIC_Dog extends OJTIC_Pet