public function testQueryCopy()
 {
     $q = new Doctrine_Query();
     $q->from('User u');
     $q2 = $q->copy();
     $this->assertEqual($q->getSqlQuery(), $q2->getSqlQuery());
     $this->assertEqual($q->getSqlQuery(), '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.type = 0)');
 }
Example #2
0
 /**
  * @param Doctrine_Query $query         the base query
  */
 public function __construct($query)
 {
     if (is_string($query)) {
         $this->query = Doctrine_Query::create();
         $this->query->parseDqlQuery($query);
     } elseif ($query instanceof Doctrine_Query) {
         $this->query = $query;
     } else {
         throw new Doctrine_Exception('Constructor argument should be either Doctrine_Query object or valid DQL query');
     }
     $this->query->getSqlQuery();
 }
 public function testJoinWithConditionAndNotInClause()
 {
     // Related to ticket #1329
     $q = new Doctrine_Query();
     $q->parseDqlQuery("SELECT a.name, b.id FROM User a LEFT JOIN a.Phonenumber b WITH a.id NOT IN (1, 2, 3)");
     $this->assertEqual($q->getSqlQuery(), "SELECT e.id AS e__id, e.name AS e__name, p.id AS p__id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id AND (e.id NOT IN (1, 2, 3)) WHERE (e.type = 0)");
 }
Example #4
0
 public function testApplyInheritance()
 {
     $query = new Doctrine_Query();
     $query->from('InheritanceDeal d, d.Users u');
     $query->where('u.id = 1');
     $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';
     $this->assertEqual($sql, $query->getSqlQuery());
 }
Example #5
0
 /**
 public function testShortAliasesWithSingleComponent() {
     $q = new Doctrine_Query();
 
     $q->select('u.name')->from('User u');
 
     $this->assertEqual($q->getSqlQuery(), 'SELECT e.id AS e__id, e.name AS e__name FROM entity e WHERE (e.type = 0)');
 }
 */
 public function testShortAliasesWithOneToManyLeftJoin()
 {
     $q = new Doctrine_Query();
     $q->select('u.name, p.id')->from('User u LEFT JOIN u.Phonenumber p');
     $this->assertEqual($q->getSqlQuery(), 'SELECT e.id AS e__id, e.name AS e__name, p.id AS p__id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)');
     $users = $q->execute();
     $this->assertEqual($users->count(), 8);
 }
 public function testDeleteWithLimitAndOffset()
 {
     $q = new Doctrine_Query();
     $q->parseDqlQuery('DELETE FROM Entity LIMIT 10 OFFSET 20');
     $this->assertEqual($q->getSqlQuery(), 'DELETE FROM entity LIMIT 10 OFFSET 20');
     $q = new Doctrine_Query();
     $q->delete()->from('Entity')->limit(10)->offset(20);
     $this->assertEqual($q->getSqlQuery(), 'DELETE FROM entity LIMIT 10 OFFSET 20');
 }
Example #7
0
 /**
  * creates this view
  *
  * @throws Doctrine_View_Exception
  * @return void
  */
 public function create()
 {
     $sql = sprintf(self::CREATE, $this->_name, $this->_query->getSqlQuery());
     try {
         $this->_conn->execute($sql, $this->_query->getFlattenedParams());
     } catch (Doctrine_Exception $e) {
         throw new Doctrine_View_Exception($e->__toString());
     }
 }
 public function testOrderByWithDifferentOrderning()
 {
     try {
         $q = new Doctrine_Query();
         $q->select('u.name')->from('User u')->orderby('u.id ASC, u.name DESC');
         // nonesese results expected, but query is syntatically ok.
         $this->assertEqual($q->getSqlQuery(), 'SELECT e.id AS e__id, e.name AS e__name FROM entity e WHERE (e.type = 0) ORDER BY e.id ASC, e.name DESC');
         $this->pass();
     } catch (Exception $e) {
         $this->fail($e->getMessage());
     }
 }
Example #9
0
 /**
  * Searchable keyword search
  * 
  * @param string $string Keyword string to search for
  * @param Doctrine_Query $query Query object to alter. Adds where condition to limit the results using the search index
  * @return array    ids and relevancy
  */
 public function search($string, $query = null)
 {
     $q = new Doctrine_Search_Query($this->_table);
     if ($query instanceof Doctrine_Query) {
         $q->query($string, false);
         $newQuery = $query->copy();
         $query->getSqlQuery();
         $key = (array) $this->getOption('table')->getIdentifier();
         $newQuery->addWhere($query->getRootAlias() . '.' . current($key) . ' IN (SQL:' . $q->getSqlQuery() . ')', $q->getParams());
         return $newQuery;
     } else {
         $q->query($string);
         return $this->_options['connection']->fetchAll($q->getSqlQuery(), $q->getParams());
     }
 }
 public function testQueryWithMultipleNestedAliases()
 {
     $this->connection->clear();
     $q = new Doctrine_Query();
     $q->from('User u, u.Phonenumber, u.Group g, g.Phonenumber')->where('u.id IN (5,6)');
     $users = $q->execute();
     $count = count($this->conn);
     $this->assertTrue($users[0]->Phonenumber instanceof Doctrine_Collection);
     $this->assertEqual($q->getSqlQuery(), "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))");
     $this->assertEqual(count($users), 2);
     $this->assertEqual(count($users[0]['Group']), 1);
     $this->assertEqual(count($users[0]['Group'][0]['Phonenumber']), 1);
     $this->assertEqual(count($users[1]['Group']), 0);
     $this->assertEqual($count, count($this->conn));
 }
 public function testConditionParser2()
 {
     $query = new Doctrine_Query($this->connection);
     $query->select('User.id')->from("User")->where("User.name LIKE 'z%' OR User.name LIKE 's%'");
     $sql = "SELECT e.id AS e__id FROM entity e WHERE (e.name LIKE 'z%' OR e.name LIKE 's%') AND (e.type = 0)";
     $this->assertEqual($query->getSqlQuery(), $sql);
     $query->where("(User.name LIKE 'z%') OR (User.name LIKE 's%')");
     $this->assertEqual($query->getSqlQuery(), $sql);
     $query->where("((User.name LIKE 'z%') OR (User.name LIKE 's%'))");
     $this->assertEqual($query->getSqlQuery(), $sql);
     $query->where("(((User.name LIKE 'z%') OR (User.name LIKE 's%')))");
     $this->assertEqual($query->getSqlQuery(), $sql);
     $query->where("(((User.name LIKE 'z%') OR User.name LIKE 's%'))");
     $this->assertEqual($query->getSqlQuery(), $sql);
     $query->where("(User.name LIKE 'z%') OR User.name LIKE 's%' AND User.name LIKE 'a%'");
     $sql = "SELECT e.id AS e__id FROM entity e WHERE ((e.name LIKE 'z%' OR e.name LIKE 's%') AND e.name LIKE 'a%') AND (e.type = 0)";
     $this->assertEqual($query->getSqlQuery(), "SELECT e.id AS e__id FROM entity e WHERE (e.name LIKE 'z%' OR (e.name LIKE 's%' AND e.name LIKE 'a%')) AND (e.type = 0)");
     $query->where("(((User.name LIKE 'z%') OR User.name LIKE 's%')) AND User.name LIKE 'a%'");
     $this->assertEqual($query->getSqlQuery(), $sql);
     $query->where("((((User.name LIKE 'z%') OR User.name LIKE 's%')) AND User.name LIKE 'a%')");
     $this->assertEqual($query->getSqlQuery(), $sql);
     $query->where("(((((User.name LIKE 'z%') OR User.name LIKE 's%')) AND User.name LIKE 'a%'))");
     $this->assertEqual($query->getSqlQuery(), $sql);
 }
Example #12
0
 public function testGetLimitSubqueryOrderBy2()
 {
     $q = new Doctrine_Query();
     $q->select('u.name, COUNT(DISTINCT a.id) num_albums');
     $q->from('User u, u.Album a');
     $q->orderby('num_albums');
     $q->groupby('u.id');
     try {
         // this causes getLimitSubquery() to be used, and it fails
         $q->limit(5);
         $users = $q->execute();
         $count = $users->count();
     } catch (Doctrine_Exception $e) {
         $this->fail($e->getMessage());
     }
     $this->assertEqual($q->getSqlQuery(), 'SELECT e.id AS e__id, e.name AS e__name, COUNT(DISTINCT a.id) AS a__0 FROM entity e LEFT JOIN album a ON e.id = a.user_id WHERE e.id IN (SELECT DISTINCT e2.id FROM entity e2 LEFT JOIN album a2 ON e2.id = a2.user_id WHERE (e2.type = 0) GROUP BY e2.id ORDER BY a__0 LIMIT 5) AND (e.type = 0) GROUP BY e.id ORDER BY a__0');
 }
 public function testTicket()
 {
     Doctrine_Manager::getInstance()->setAttribute(Doctrine_Core::ATTR_USE_DQL_CALLBACKS, true);
     $q = new Doctrine_Query();
     $q->select('s.*')->from('Ticket_1116_User s')->where('s.username = ?', array('test'));
     // to see the error switch dbh to a real db, the next line will trigger the error
     $test = $q->fetchOne();
     //will only fail with "real" mysql
     $this->assertFalse($test);
     $sql = $q->getSqlQuery();
     // just getSql()?!?! and it works ? the params are ok after this call
     $params = $q->getFlattenedParams();
     $this->assertEqual(count($params), 1);
     // now we have array('test',null) very strange .....
     $this->assertEqual($sql, "SELECT u.id AS u__id, u.username AS u__username, u.deleted_at AS u__deleted_at FROM user u WHERE (u.username = ? AND (u.deleted_at IS NULL))");
     $this->assertEqual($params, array('test'));
     //now also this works! (always works witch mock only fails with mysql)
     $test = $q->fetchOne();
     $this->assertFalse($test);
     Doctrine_Manager::getInstance()->setAttribute(Doctrine_Core::ATTR_USE_DQL_CALLBACKS, false);
 }
 public function testQueryDoesNotSeparateNotAndExists()
 {
     $q = new Doctrine_Query();
     $q->select('u.id')->from('User u')->where('NOT EXISTS (SELECT g.id FROM Group g)');
     $this->assertEqual($q->getSqlQuery(), 'SELECT e.id AS e__id FROM entity e WHERE (NOT EXISTS (SELECT e2.id AS e2__id FROM entity e2 WHERE (e2.type = 1)) AND (e.type = 0))');
 }
 public function testUpdateSupportsComplexExpressions()
 {
     $q = new Doctrine_Query();
     $q->update('User u')->set('u.name', "CONCAT(?, CONCAT(':', SUBSTRING(u.name, LOCATE(':', u.name)+1, LENGTH(u.name) - LOCATE(':', u.name)+1)))", array('gblanco'))->where('u.id IN (SELECT u2.id FROM User u2 WHERE u2.name = ?) AND u.email_id = ?', array('guilhermeblanco', 5));
     $this->assertEqual($q->getSqlQuery(), "UPDATE entity SET name = CONCAT(?, CONCAT(':', SUBSTRING(name, LOCATE(':', name)+1, LENGTH(name) - LOCATE(':', name)+1))) WHERE (id IN (SELECT e2.id AS e2__id FROM entity e2 WHERE (e2.name = ? AND (e2.type = 0))) AND email_id = ?) AND (type = 0)");
 }
 public function testCorrelatedSubqueryWithInOperatorIsSupported()
 {
     $q = new Doctrine_Query();
     $q->select('u.id')->from('User u')->where('u.name IN (SELECT u2.name FROM User u2 WHERE u2.id = u.id)');
     $this->assertEqual($q->getSqlQuery(), '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 (e2.type = 0))) AND (e.type = 0))');
 }
 public function testReferenfingParentColumnsUsesProperAliases()
 {
     $q = new Doctrine_Query();
     $q->from('CTITest c')->where("c.name = 'Jack'");
     $this->assertEqual($q->getSqlQuery(), "SELECT c.id AS c__id, c3.added AS c__added, c2.name AS c__name, c2.verified AS c__verified, c.age AS c__age FROM c_t_i_test_parent4 c LEFT JOIN c_t_i_test_parent2 c2 ON c.id = c2.id LEFT JOIN c_t_i_test_parent3 c3 ON c.id = c3.id WHERE c2.name = 'Jack'");
     $q = new Doctrine_Query();
     $q->from('CTITest c')->where("name = 'Jack'");
     $this->assertEqual($q->getSqlQuery(), "SELECT c.id AS c__id, c3.added AS c__added, c2.name AS c__name, c2.verified AS c__verified, c.age AS c__age FROM c_t_i_test_parent4 c LEFT JOIN c_t_i_test_parent2 c2 ON c.id = c2.id LEFT JOIN c_t_i_test_parent3 c3 ON c.id = c3.id WHERE c2.name = 'Jack'");
 }
 /**
  * Ticket #1038
  */
 public function testLimitOffsetLimitSubqueriesForOracleWithGroupByOrderBy()
 {
     $this->dbh = new Doctrine_Adapter_Mock('oracle');
     $conn = $this->manager->openConnection($this->dbh);
     $q = new Doctrine_Query($conn);
     // The orderBy(p.id) will force p.id to be added to the SELECT part of the
     // SELECT DISTINCT subquery because that is required by oracle. This, however,
     // can result in duplicated primary keys that would cause incorrect ROWNUM calculations,
     // hence an additional subquery used to filter out the primary keys is added.
     $q->from('User u')->innerJoin('u.Phonenumber p')->groupBy('u.name')->orderBy('p.id')->limit(5)->offset(2);
     $correctSql = "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 " . "FROM entity e " . "INNER JOIN phonenumber p ON e.id = p.entity_id " . "WHERE e.id IN (" . "SELECT b.id FROM ( " . "SELECT a.*, ROWNUM AS doctrine_rownum " . "FROM ( " . "SELECT doctrine_subquery_alias.id FROM (" . "SELECT e2.id, p2.id " . "FROM entity e2 " . "INNER JOIN phonenumber p2 ON e2.id = p2.entity_id " . "WHERE (e2.type = 0) GROUP BY e2.name ORDER BY p2.id" . ") doctrine_subquery_alias GROUP BY doctrine_subquery_alias.id ORDER BY MIN(ROWNUM) " . ") a " . " ) b " . "WHERE doctrine_rownum BETWEEN 3 AND 7" . ") AND (e.type = 0) GROUP BY e.name ORDER BY p.id";
     $this->assertEqual($q->getSqlQuery(), $correctSql);
 }
 public function testNonPortableFunctionsAreSupported()
 {
     $query = new Doctrine_Query();
     // we are using stored procedure here, so adjust portability settings
     $this->conn->setAttribute(Doctrine_Core::ATTR_PORTABILITY, Doctrine_Core::PORTABILITY_ALL ^ Doctrine_Core::PORTABILITY_EXPR);
     $lat = '13.23';
     $lon = '33.23';
     $radius = '33';
     $query->select("l.*, i18n.*, GeoDistKM(l.lat, l.lon, {$lat}, {$lon}) distance")->from('Location l, l.LocationI18n i18n')->where('l.id <> ? AND i18n.culture = ?', array(1, 'en'))->having("distance < {$radius}")->orderby('distance ASC')->groupby('l.id')->limit(5);
     $this->assertEqual($query->getSqlQuery(), "SELECT l.id AS l__id, l.lat AS l__lat, l.lon AS l__lon, l2.name AS l2__name, l2.id AS l2__id, l2.culture AS l2__culture, GeoDistKM(l.lat, l.lon, 13.23, 33.23) AS l__0 FROM location l LEFT JOIN location_i18n l2 ON l.id = l2.id WHERE l.id IN (SELECT DISTINCT l3.id FROM location l3 LEFT JOIN location_i18n l4 ON l3.id = l4.id WHERE (l3.id <> ? AND l4.culture = ?) GROUP BY l3.id HAVING GeoDistKM(l3.lat, l3.lon, 13.23, 33.23) < 33 ORDER BY GeoDistKM(l3.lat, l3.lon, 13.23, 33.23) LIMIT 5) AND (l.id <> ? AND l2.culture = ?) GROUP BY l.id HAVING l__0 < 33 ORDER BY l__0 ASC");
     $this->conn->setAttribute(Doctrine_Core::ATTR_PORTABILITY, Doctrine_Core::PORTABILITY_ALL);
 }
Example #20
0
 public function testMultipleJoins2()
 {
     $q = new Doctrine_Query();
     $q->select('u.id, g.id, e.id')->from('Group g')->leftJoin('g.User u')->leftJoin('u.Account a');
     $this->assertEqual($q->getSqlQuery(), '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)');
     try {
         $q->execute();
         $this->pass();
     } catch (Doctrine_Exception $e) {
         $this->fail();
     }
 }
 public function testConditionParserWithNoSpacesForAND()
 {
     $query = new Doctrine_Query($this->connection);
     $query->select('User.id')->from('User')->where('33=55')->orWhere('(1=1)AND(2=2)');
     $sql = 'SELECT e.id AS e__id FROM entity e WHERE (33 = 55 OR (1 = 1 AND 2 = 2) AND (e.type = 0))';
     $this->assertEqual($query->getSqlQuery(), $sql);
     $query = new Doctrine_Query($this->connection);
     $query->select('User.id')->from('User')->where('33=55')->orWhere("(1=1) AND\n(2=2)");
     $sql = 'SELECT e.id AS e__id FROM entity e WHERE (33 = 55 OR (1 = 1 AND 2 = 2) AND (e.type = 0))';
     $this->assertEqual($query->getSqlQuery(), $sql);
     $query = new Doctrine_Query($this->connection);
     $query->select('User.id')->from('User')->where('33=55')->orWhere("(1=1)\n\tAND (2=2)");
     $sql = 'SELECT e.id AS e__id FROM entity e WHERE (33 = 55 OR (1 = 1 AND 2 = 2) AND (e.type = 0))';
     $this->assertEqual($query->getSqlQuery(), $sql);
     $query = new Doctrine_Query($this->connection);
     $query->select('User.id')->from('User')->where('33=55')->orWhere('(1=1)AND(2=2)');
     $sql = 'SELECT e.id AS e__id FROM entity e WHERE (33 = 55 OR (1 = 1 AND 2 = 2) AND (e.type = 0))';
     $this->assertEqual($query->getSqlQuery(), $sql);
 }
Example #22
0
 public function testMixingOfJoins2()
 {
     $q = new Doctrine_Query();
     $q->select('u.name, g.name, p.phonenumber')->from('User u INNER JOIN u.Group g LEFT JOIN g.Phonenumber p');
     $this->assertEqual($q->getSqlQuery(), "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)");
 }
Example #23
0
 public function testMultipleAggregateFunctionValueHydrationWithAliasesAndCleanRecords()
 {
     $this->connection->clear();
     $q = new Doctrine_Query();
     $q->parseDqlQuery('SELECT u.id, COUNT(p.id) count, MAX(p.phonenumber) max FROM User u, u.Phonenumber p GROUP BY u.id');
     $this->assertEqual($q->getSqlQuery(), 'SELECT e.id AS e__id, COUNT(p.id) AS p__0, MAX(p.phonenumber) AS p__1 FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0) GROUP BY e.id');
     $users = $q->execute();
     $this->assertEqual($users[0]->Phonenumber[0]->state(), Doctrine_Record::STATE_TDIRTY);
     $this->assertEqual($users[0]->Phonenumber[0]->count, 1);
     $this->assertEqual($users[1]->Phonenumber[0]->count, 3);
     $this->assertEqual($users[2]->Phonenumber[0]->count, 1);
     $this->assertEqual($users[3]->Phonenumber[0]->count, 1);
     $this->assertEqual($users[4]->Phonenumber[0]->count, 3);
     $this->assertEqual($users[0]->Phonenumber[0]->max, '123 123');
     $this->assertEqual($users[1]->Phonenumber[0]->max, '789 789');
     $this->assertEqual($users[2]->Phonenumber[0]->max, '123 123');
     $this->assertEqual($users[3]->Phonenumber[0]->max, '111 222 333');
     $this->assertEqual($users[4]->Phonenumber[0]->max, '444 555');
 }
 public function testEqualNestRelationsQuerying()
 {
     $this->connection->clear();
     $q = new Doctrine_Query();
     $q->from('NestTest n')->innerJoin('n.Relatives r')->where('n.id = 1');
     $n = $q->execute();
     $this->assertEqual($q->getSqlQuery(), 'SELECT n.id AS n__id, n.name AS n__name, n2.id AS n2__id, n2.name AS n2__name FROM nest_test n INNER JOIN nest_reference n3 ON (n.id = n3.child_id OR n.id = n3.parent_id) INNER JOIN nest_test n2 ON (n2.id = n3.parent_id OR n2.id = n3.child_id) AND n2.id != n.id WHERE (n.id = 1)');
     $this->assertEqual($n[0]->Relatives->count(), 5);
 }
 public function testQueryCopyClone()
 {
     $query = new Doctrine_Query();
     $query->select('u.*')->from('User u');
     $sql = $query->getSqlQuery();
     $data = $query->execute();
     $query2 = $query->copy();
     $this->assertTrue($sql, $query2->getSqlQuery());
     $query2->limit(0);
     $query2->offset(0);
     $query2->select('COUNT(u.id) as nb');
     $this->assertTrue($query2->getSqlQuery(), 'SELECT COUNT(e.id) AS e__0 FROM entity e WHERE (e.type = 0)');
 }
Example #26
0
 public function testAggregateFunctionsInHavingReturnValidSql2()
 {
     $q = new Doctrine_Query();
     $q->parseDqlQuery("SELECT u.name FROM User u LEFT JOIN u.Phonenumber p HAVING MAX(u.name) = 'zYne'");
     $this->assertEqual($q->getSqlQuery(), "SELECT e.id AS e__id, e.name AS e__name FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0) HAVING MAX(e.name) = 'zYne'");
 }
Example #27
0
 public function testAggregateFunctionParsingSupportsMultipleComponentReferences()
 {
     $q = new Doctrine_Query();
     $q->select('SUM(i.price * i.quantity)')->from('QueryTest_Item i');
     $this->assertEqual($q->getSqlQuery(), "SELECT SUM(q.price * q.quantity) AS q__0 FROM query_test__item q");
 }
 public function testLiteralEnumValueConversionSupportsJoins()
 {
     $q = new Doctrine_Query($this->connection);
     $q->addSelect('e.*')->addSelect('e3.*')->from('EnumTest e')->leftJoin('e.Enum3 e3')->where("e.status = 'verified'")->execute();
     $this->assertEqual($q->getSqlQuery(), "SELECT e.id AS e__id, e.status AS e__status, e.text AS e__text, e2.text AS e2__text FROM enum_test e LEFT JOIN enum_test3 e2 ON e.text = e2.text WHERE (e.status = 'verified')");
 }
 public function testConnectionFlushing()
 {
     $q = new Doctrine_Query();
     $q->from('User.Phonenumber');
     $q->where('User.name = ?', array('zYne'));
     $q->limit(5);
     $users = $q->execute();
     $this->assertEqual($q->getSqlQuery(), '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 FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE e.id IN (SELECT DISTINCT e2.id FROM entity e2 LEFT JOIN phonenumber p2 ON e2.id = p2.entity_id WHERE e2.name = ? AND (e2.type = 0) LIMIT 5) AND e.name = ? AND (e.type = 0)');
     $this->assertEqual($users->count(), 1);
     //$this->connection->flush();
 }
 public function testUpdateQuerySupportsIdentifierQuoting8()
 {
     $q = new Doctrine_Query();
     $q->update('User u')->set('u.id', 'u.id + 1')->where('u.name = ?');
     $this->assertEqual($q->getSqlQuery(), 'UPDATE "entity" SET "id" = "id" + 1 WHERE ("name" = ? AND ("type" = 0))');
     $this->conn->setAttribute(Doctrine_Core::ATTR_QUOTE_IDENTIFIER, false);
 }