/** * @param Fetcher $paginator * @return array(string, array) the sql and the array of the parameters */ public function getSqlByPaginator(Fetcher $paginator) { list($filterInReq, $filterToParameter) = $paginator->getFiltersForQuery(); $sortInReq = $paginator->getSortForQuery(); $isRandom = $paginator->isRandomSort(); $limit = $paginator->getLimit(); if ($isRandom) { $sql = <<<EOL SELECT id FROM (SELECT id, RANDOM() FROM {$this->getTableName()} WHERE {$filterInReq} ORDER BY 2 {$limit}) randomized EOL; } else { $sql = <<<EOL SELECT id FROM {$this->getTableName()} WHERE {$filterInReq} ORDER BY {$sortInReq} {$limit} EOL; } return array($sql, $filterToParameter); }