Changeset 4608 for tags/0.11.0

Show
Ignore:
Timestamp:
07/01/08 06:47:23 (6 months ago)
Author:
gnat
Message:

have fetchOne set a limit on the query so as to not retrieve many many rows and grab the first

Location:
tags/0.11.0
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • tags/0.11.0/lib/Doctrine/Query.php

    r4519 r4608  
    311311    public function fetchOne($params = array(), $hydrationMode = null) 
    312312    { 
    313         $collection = $this->execute($params, $hydrationMode); 
     313        $collection = $this->limit(1)->execute($params, $hydrationMode); 
    314314 
    315315        if (count($collection) === 0) { 
  • tags/0.11.0/tests/Query/JoinTestCase.php

    r4509 r4608  
    245245        } 
    246246    } 
     247 
     248    public function testFetchOneAppliesALimit() 
     249    { 
     250        $q   = new Doctrine_Query(); 
     251        $obj = $q->from('Group g')->fetchOne(); 
     252        $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 = 1) LIMIT 1');        
     253 
     254       $q    = new Doctrine_Query(); 
     255       $obj  = $q->from('Group g')->leftJoin('g.User u')->fetchOne(); 
     256       $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, 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.group_id LEFT JOIN entity e2 ON e2.id = g.user_id WHERE e.id IN (SELECT DISTINCT e3.id FROM entity e3 LEFT JOIN groupuser g2 ON e3.id = g2.group_id LEFT JOIN entity e4 ON e4.id = g2.user_id WHERE (e3.type = 1 AND (e4.type = 0 OR e4.type IS NULL)) LIMIT 1) AND (e.type = 1 AND (e2.type = 0 OR e2.type IS NULL))'); 
     257 
     258   } 
    247259} 
  • tags/0.11.0/tests/Ticket/1116TestCase.php

    r4488 r4608  
    2828                $this->assertEqual(count($params), 2); // now we have array('test',null) very strange .....  
    2929 
    30                 $this->assertEqual($sql, "SELECT u.id AS u__id, u.username AS u__username, u.deleted AS u__deleted FROM user u WHERE u.username = ? AND u.deleted = ?"); 
     30                $this->assertEqual($sql, "SELECT u.id AS u__id, u.username AS u__username, u.deleted AS u__deleted FROM user u WHERE u.username = ? AND u.deleted = ? LIMIT 1"); 
    3131                $this->assertEqual($params, array('test', false)); 
    3232