Changeset 4572
- Timestamp:
- 06/28/08 00:19:59 (6 months ago)
- Location:
- branches/0.11
- Files:
-
- 11 modified
-
lib/Doctrine/Query.php (modified) (4 diffs)
-
lib/Doctrine/Query/Abstract.php (modified) (1 diff)
-
lib/Doctrine/RawSql.php (modified) (1 diff)
-
tests/Query/ApplyInheritanceTestCase.php (modified) (1 diff)
-
tests/Query/ComponentAliasTestCase.php (modified) (2 diffs)
-
tests/Query/FromTestCase.php (modified) (9 diffs)
-
tests/Query/JoinConditionTestCase.php (modified) (2 diffs)
-
tests/Query/JoinTestCase.php (modified) (3 diffs)
-
tests/Query/LimitTestCase.php (modified) (1 diff)
-
tests/Query/SubqueryTestCase.php (modified) (1 diff)
-
tests/Query/WhereTestCase.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/0.11/lib/Doctrine/Query.php
r4519 r4572 1027 1027 1028 1028 // preserve LEFT JOINs only if needed 1029 // Check if it's JOIN, if not add a comma separator instead of space1029 // Check if it's JOIN, if not add a comma separator instead of space 1030 1030 if (!preg_match('/\bJOIN\b/i', $part) && !isset($this->_pendingJoinConditions[$k])) { 1031 1031 $q .= ', ' . $part; 1032 1032 } else { 1033 $e = explode(' ', $part); 1034 1033 1035 if (substr($part, 0, 9) === 'LEFT JOIN') { 1034 $e = explode(' ', $part);1035 1036 1036 $aliases = array_merge($this->_subqueryAliases, 1037 1037 array_keys($this->_neededTables)); … … 1059 1059 } 1060 1060 1061 $q .= ' ' . $part; 1061 $tableAlias = trim($e[3], '"'); 1062 $componentAlias = $this->getComponentAlias($tableAlias); 1063 1064 $string = $this->getInheritanceCondition($componentAlias); 1065 1066 if ($string) { 1067 $q .= ' ' . $part . ' AND ' . $string; 1068 } else { 1069 $q .= ' ' . $part; 1070 } 1062 1071 } 1063 1072 … … 1142 1151 } 1143 1152 1144 $string = $this-> applyInheritance();1153 $string = $this->getInheritanceCondition($this->getRootAlias()); 1145 1154 1146 1155 // apply inheritance to WHERE part … … 1782 1791 1783 1792 // append column aggregation inheritance (if needed) 1784 $string = $this-> applyInheritance();1793 $string = $this->getInheritanceCondition($this->getRootAlias()); 1785 1794 1786 1795 if ( ! empty($string)) { -
branches/0.11/lib/Doctrine/Query/Abstract.php
r4530 r4572 596 596 597 597 /** 598 * applyInheritance 599 * applies column aggregation inheritance to DQL / SQL query 600 * 601 * @return string 602 */ 603 public function applyInheritance() 604 { 605 // get the inheritance maps 606 $array = array(); 607 608 foreach ($this->_queryComponents as $componentAlias => $data) { 609 $tableAlias = $this->getSqlTableAlias($componentAlias); 610 $array[$tableAlias][] = $data['table']->inheritanceMap; 611 } 612 613 // apply inheritance maps 614 $str = ''; 615 $c = array(); 616 617 $index = 0; 618 foreach ($array as $tableAlias => $maps) { 619 $a = array(); 620 621 // don't use table aliases if the query isn't a select query 622 if ($this->_type !== Doctrine_Query::SELECT) { 623 $tableAlias = ''; 624 } else { 625 $tableAlias .= '.'; 626 } 627 628 foreach ($maps as $map) { 629 $b = array(); 630 foreach ($map as $field => $value) { 631 $identifier = $this->_conn->quoteIdentifier($tableAlias . $field); 632 633 if ($index > 0) { 634 $b[] = '(' . $identifier . ' = ' . $this->_conn->quote($value) 635 . ' OR ' . $identifier . ' IS NULL)'; 636 } else { 637 $b[] = $identifier . ' = ' . $this->_conn->quote($value); 638 } 639 } 640 641 if ( ! empty($b)) { 642 $a[] = implode(' AND ', $b); 643 } 644 } 645 646 if ( ! empty($a)) { 647 $c[] = implode(' AND ', $a); 648 } 649 $index++; 650 } 651 652 $str .= implode(' AND ', $c); 653 654 return $str; 598 * Returns the inheritance condition for the passed componentAlias 599 * If no component alias is specified it defaults to the root component 600 * 601 * This function is used to append a SQL condition to models which have inheritance mapping 602 * The condition is applied to the FROM component in the WHERE, but the condition is applied to 603 * JOINS in the ON condition and not the WHERE 604 * 605 * @return string $str SQL condition string 606 */ 607 public function getInheritanceCondition($componentAlias) 608 { 609 $map = $this->_queryComponents[$componentAlias]['table']->inheritanceMap; 610 611 // No inheritance map so lets just return 612 if (empty($map)) { 613 return; 614 } 615 616 $tableAlias = $this->getSqlTableAlias($componentAlias); 617 618 if ($this->_type !== Doctrine_Query::SELECT) { 619 $tableAlias = ''; 620 } else { 621 $tableAlias .= '.'; 622 } 623 624 $field = key($map); 625 $value = current($map); 626 $identifier = $this->_conn->quoteIdentifier($tableAlias . $field); 627 628 return $identifier . ' = ' . $this->_conn->quote($value);; 655 629 } 656 630 -
branches/0.11/lib/Doctrine/RawSql.php
r4252 r4572 234 234 } 235 235 236 $string = $this-> applyInheritance();236 $string = $this->getInheritanceCondition($this->getRootAlias()); 237 237 if ( ! empty($string)) { 238 238 $this->_sqlParts['where'][] = $string; -
branches/0.11/tests/Query/ApplyInheritanceTestCase.php
r3884 r4572 51 51 $query->where('u.id = 1'); 52 52 53 $sql = 'SELECT i.id AS i__id, i.name AS i__name, i2.id AS i2__id, i2.username AS i2__username FROM inheritance_deal i LEFT JOIN inheritance_entity_user i3 ON i.id = i3.entity_id LEFT JOIN inheritance_user i2 ON i2.id = i3.user_id WHERE i2.id = 1 AND (i3.type = 1 OR i3.type IS NULL)';53 $sql = 'SELECT i.id AS i__id, i.name AS i__name, i2.id AS i2__id, i2.username AS i2__username FROM inheritance_deal i LEFT JOIN inheritance_entity_user i3 ON i.id = i3.entity_id AND i3.type = 1 LEFT JOIN inheritance_user i2 ON i2.id = i3.user_id WHERE i2.id = 1'; 54 54 55 55 $this->assertEqual($sql, $query->getSql()); -
branches/0.11/tests/Query/ComponentAliasTestCase.php
r3884 r4572 66 66 $this->assertTrue($users[0]->Phonenumber instanceof Doctrine_Collection); 67 67 $this->assertEqual($q->getQuery(), 68 "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p ON e2.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");68 "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p ON e2.id = p.entity_id WHERE (e.type = 0)"); 69 69 $this->assertEqual(($count + 1), count($this->conn)); 70 70 } … … 99 99 $this->assertTrue($users[0]->Phonenumber instanceof Doctrine_Collection); 100 100 $this->assertEqual($q->getQuery(), 101 "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p2.id AS p2__id, p2.phonenumber AS p2__phonenumber, p2.entity_id AS p2__entity_id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p2 ON e2.id = p2.entity_id WHERE e.id IN (5, 6) AND (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");101 "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p2.id AS p2__id, p2.phonenumber AS p2__phonenumber, p2.entity_id AS p2__entity_id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p2 ON e2.id = p2.entity_id WHERE e.id IN (5, 6) AND (e.type = 0)"); 102 102 $this->assertEqual(count($users), 2); 103 103 $this->assertEqual(count($users[0]['Group']), 1); -
branches/0.11/tests/Query/FromTestCase.php
r4263 r4572 48 48 $q->from('User u LEFT JOIN u.Group'); 49 49 50 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");50 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE (e.type = 0)"); 51 51 } 52 52 … … 57 57 $q->from('User u JOIN u.Group'); 58 58 59 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");59 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE (e.type = 0)"); 60 60 } 61 61 … … 66 66 $q->from('User u INNER JOIN u.Group'); 67 67 68 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");68 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE (e.type = 0)"); 69 69 } 70 70 … … 75 75 $q->from('User u LEFT JOIN u.Group LEFT JOIN u.Phonenumber'); 76 76 77 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");77 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)"); 78 78 } 79 79 public function testMultipleLeftJoin2() … … 83 83 $q->from('User u LEFT JOIN u.Group LEFT JOIN u.Phonenumber'); 84 84 85 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");85 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)"); 86 86 } 87 87 public function testMultipleInnerJoin() … … 91 91 $q->select('u.name')->from('User u INNER JOIN u.Group INNER JOIN u.Phonenumber'); 92 92 93 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id INNER JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");93 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 INNER JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)"); 94 94 } 95 95 public function testMultipleInnerJoin2() … … 99 99 $q->select('u.name')->from('User u INNER JOIN u.Group, u.Phonenumber'); 100 100 101 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id INNER JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");101 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 INNER JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)"); 102 102 } 103 103 public function testMixingOfJoins() … … 107 107 $q->select('u.name, g.name, p.phonenumber')->from('User u INNER JOIN u.Group g LEFT JOIN u.Phonenumber p'); 108 108 109 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id, e2.name AS e2__name, p.id AS p__id, p.phonenumber AS p__phonenumber FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");109 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id, e2.name AS e2__name, p.id AS p__id, p.phonenumber AS p__phonenumber FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)"); 110 110 } 111 111 public function testMixingOfJoins2() … … 115 115 $q->select('u.name, g.name, p.phonenumber')->from('User u INNER JOIN u.Group g LEFT JOIN g.Phonenumber p'); 116 116 117 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id, e2.name AS e2__name, p.id AS p__id, p.phonenumber AS p__phonenumber FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p ON e2.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");117 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id, e2.name AS e2__name, p.id AS p__id, p.phonenumber AS p__phonenumber FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN phonenumber p ON e2.id = p.entity_id WHERE (e.type = 0)"); 118 118 } 119 119 } -
branches/0.11/tests/Query/JoinConditionTestCase.php
r3884 r4572 59 59 $q->parseQuery("SELECT u.name, g.id FROM User u LEFT JOIN u.Group g ON g.id > 2"); 60 60 61 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id > 2 WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");61 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id > 2 AND e2.type = 1 WHERE (e.type = 0)"); 62 62 } 63 63 public function testJoinConditionsAreSupportedForManyToManyInnerJoins() … … 67 67 $q->parseQuery("SELECT u.name, g.id FROM User u INNER JOIN u.Group g ON g.id > 2"); 68 68 69 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id > 2 WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");69 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e2.id AS e2__id FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id > 2 AND e2.type = 1 WHERE (e.type = 0)"); 70 70 } 71 71 } -
branches/0.11/tests/Query/JoinTestCase.php
r4560 r4572 186 186 $q->select('u.name')->from('User u INNER JOIN u.Group g'); 187 187 188 $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))');188 $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e.name AS e__name FROM entity e INNER JOIN groupuser g ON e.id = g.user_id INNER JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE (e.type = 0)'); 189 189 } 190 190 … … 204 204 ->leftJoin('u.Group g')->leftJoin('g.Email e'); 205 205 206 $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e2.id AS e2__id, e3.id AS e3__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN email e3 ON e2.email_id = e3.id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))');206 $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e2.id AS e2__id, e3.id AS e3__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 LEFT JOIN email e3 ON e2.email_id = e3.id WHERE (e.type = 0)'); 207 207 try { 208 208 $q->execute(); … … 219 219 ->leftJoin('g.User u')->leftJoin('u.Account a'); 220 220 221 $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e2.id AS e2__id FROM entity e LEFT JOIN groupuser g ON e.id = g.group_id LEFT JOIN entity e2 ON e2.id = g.user_id LEFT JOIN account a ON e2.id = a.entity_id WHERE (e.type = 1 AND (e2.type = 0 OR e2.type IS NULL))');221 $this->assertEqual($q->getQuery(), 'SELECT e.id AS e__id, e2.id AS e2__id FROM entity e LEFT JOIN groupuser g ON e.id = g.group_id LEFT JOIN entity e2 ON e2.id = g.user_id AND e2.type = 0 LEFT JOIN account a ON e2.id = a.entity_id WHERE (e.type = 1)'); 222 222 try { 223 223 $q->execute(); -
branches/0.11/tests/Query/LimitTestCase.php
r4336 r4572 257 257 $this->assertEqual($users->count(), 3); 258 258 259 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id WHERE e2.name = ? AND (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL)) ORDER BY e.id DESC LIMIT 5");259 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE e2.name = ? AND (e.type = 0) ORDER BY e.id DESC LIMIT 5"); 260 260 $this->manager->setAttribute(Doctrine::ATTR_QUERY_LIMIT, Doctrine::LIMIT_RECORDS); 261 261 } -
branches/0.11/tests/Query/SubqueryTestCase.php
r3884 r4572 41 41 42 42 $this->assertEqual($q->getQuery(), 43 "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id FROM entity e WHERE e.id NOT IN (SELECT e2.id AS e2__id FROM entity e2 WHERE e2.name = 'zYne' AND (e.type = 0 AND (e2.type = 0 OR e2.type IS NULL))) AND (e.type = 0)");43 "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id FROM entity e WHERE e.id NOT IN (SELECT e2.id AS e2__id FROM entity e2 WHERE e2.name = 'zYne' AND (e.type = 0)) AND (e.type = 0)"); 44 44 45 45 $users = $q->execute(); -
branches/0.11/tests/Query/WhereTestCase.php
r3884 r4572 253 253 $q->select('u.id')->from('User u')->where("u.Group.name ='some group'"); 254 254 255 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id WHERE e2.name = 'some group' AND (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");255 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE e2.name = 'some group' AND (e.type = 0)"); 256 256 } 257 257 public function testDeepComponentReferencingIsSupported2() … … 261 261 $q->select('u.id')->from('User u')->addWhere("u.Group.name ='some group'"); 262 262 263 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id WHERE e2.name = 'some group' AND (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))");263 $this->assertEqual($q->getQuery(), "SELECT e.id AS e__id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id AND e2.type = 1 WHERE e2.name = 'some group' AND (e.type = 0)"); 264 264 } 265 265 public function testEnumValuesWorkInPlaceholders() … … 323 323 $q->select('u.id')->from('User u')->where('u.name IN (SELECT u2.name FROM User u2 WHERE u2.id = u.id)'); 324 324 325 $this->assertEqual($q->getSql(), 'SELECT e.id AS e__id FROM entity e WHERE e.name IN (SELECT e2.name AS e2__name FROM entity e2 WHERE e2.id = e.id AND (e.type = 0 AND (e2.type = 0 OR e2.type IS NULL))) AND (e.type = 0)');325 $this->assertEqual($q->getSql(), 'SELECT e.id AS e__id FROM entity e WHERE e.name IN (SELECT e2.name AS e2__name FROM entity e2 WHERE e2.id = e.id AND (e.type = 0)) AND (e.type = 0)'); 326 326 } 327 327 }