Example #1
0
 public function testNeedsSelectAliases()
 {
     $c = new Criteria();
     $this->assertFalse($c->needsSelectAliases(), 'Empty Criterias don\'t need aliases');
     $c = new Criteria();
     $c->addSelectColumn(BookTableMap::COL_ID);
     $c->addSelectColumn(BookTableMap::COL_TITLE);
     $this->assertFalse($c->needsSelectAliases(), 'Criterias with distinct column names don\'t need aliases');
     $c = new Criteria();
     BookTableMap::addSelectColumns($c);
     $this->assertFalse($c->needsSelectAliases(), 'Criterias with only the columns of a model don\'t need aliases');
     $c = new Criteria();
     $c->addSelectColumn(BookTableMap::COL_ID);
     $c->addSelectColumn(AuthorTableMap::COL_ID);
     $this->assertTrue($c->needsSelectAliases(), 'Criterias with common column names do need aliases');
 }
Example #2
0
 /**
  * @see AdapterInterface::applyLimit()
  *
  * @param string        $sql
  * @param integer       $offset
  * @param integer       $limit
  * @param null|Criteria $criteria
  */
 public function applyLimit(&$sql, $offset, $limit, $criteria = null)
 {
     $params = array();
     if ($criteria && $criteria->needsSelectAliases()) {
         $crit = clone $criteria;
         $selectSql = $this->createSelectSqlPart($crit, $params, true);
         $sql = $selectSql . substr($sql, strpos($sql, 'FROM') - 1);
     }
     $sql = 'SELECT B.* FROM (' . 'SELECT A.*, rownum AS PROPEL_ROWNUM FROM (' . $sql . ') A ' . ') B WHERE ';
     if ($offset > 0) {
         $sql .= ' B.PROPEL_ROWNUM > ' . $offset;
         if ($limit > 0) {
             $sql .= ' AND B.PROPEL_ROWNUM <= ' . ($offset + $limit);
         }
     } else {
         $sql .= ' B.PROPEL_ROWNUM <= ' . $limit;
     }
 }