コード例 #1
0
    /**
     * @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);
    }