3 namespace Doctrine\Tests\ORM\Functional\Ticket;
5 use Doctrine\Tests\Models\Company\CompanyPerson;
7 require_once __DIR__ . '/../../../TestInit.php';
9 class DDC163Test extends \Doctrine\Tests\OrmFunctionalTestCase
11 protected function setUp()
13 $this->useModelSet('company');
20 public function testQueryWithOrConditionUsingTwoRelationOnSameEntity()
22 $p1 = new CompanyPerson;
25 $p2 = new CompanyPerson;
28 $p3 = new CompanyPerson;
31 $p4 = new CompanyPerson;
40 $this->_em->persist($p1);
41 $this->_em->persist($p2);
42 $this->_em->persist($p3);
43 $this->_em->persist($p4);
48 $dql = 'SELECT PARTIAL person.{id,name}, PARTIAL spouse.{id,name}, PARTIAL friend.{id,name}
49 FROM Doctrine\Tests\Models\Company\CompanyPerson person
50 LEFT JOIN person.spouse spouse
51 LEFT JOIN person.friends friend
52 LEFT JOIN spouse.friends spouse_friend
53 LEFT JOIN friend.friends friend_friend
54 WHERE person.name=:name AND (spouse_friend.name=:name2 OR friend_friend.name=:name2)';
56 $q = $this->_em->createQuery($dql);
57 $q->setParameter('name', "p1");
58 $q->setParameter('name2', "p4");
59 $result = $q->getScalarResult();
61 $this->assertEquals('p3', $result[0]['spouse_name']);
62 $this->assertEquals('p1', $result[0]['person_name']);
63 $this->assertEquals('p2', $result[0]['friend_name']);