Пример #1
0
    /**
     * @param Fetcher $fetcher
     * @return Fetcher
     */
    public function getIdsByFetcher(Fetcher $fetcher)
    {
        $query = $this->getQuery($fetcher);
        list($filterInReq, $filterToParameter) = $this->queryBuilder->buildFilters($fetcher);
        $sortInReq = $this->queryBuilder->buildSort($fetcher);
        $sortWrappingQuery = implode(', ', array_merge(array("DISTINCT (lastsub.id) AS id"), array_keys($fetcher->getSorts())));
        $limit = $this->queryBuilder->buildLimit($fetcher);
        $isRandom = $fetcher->isRandomSort();
        if ($isRandom) {
            $sql = <<<SQL
SELECT
    id
FROM
    (
    SELECT
        DISTINCT ON (id) id
    FROM
        (
            SELECT
                sub.*
            FROM
                ({$query}) AS sub
            WHERE
                ({$filterInReq})
        ) as lastsub
    ORDER BY
        id ASC
    ) AS lastsub
ORDER BY
    RANDOM() ASC
{$limit}
SQL;
        } else {
            $sql = <<<SQL
SELECT
    {$sortWrappingQuery}
FROM
    (
    SELECT
        sub.*
    FROM
        ({$query})  AS sub
    WHERE
        {$filterInReq}
    ) AS lastsub
ORDER BY
    {$sortInReq}
{$limit}
SQL;
        }
        return $this->db->fetchCol($sql, $filterToParameter);
    }
Пример #2
0
    public function invert($value, $lang)
    {
        $sql = <<<SQL
SELECT
    key
FROM
    translations_engine
WHERE
    value = ?
    AND lang = ?
SQL;
        $key = $this->reader->fetchOne($sql, array($value, $lang));
        if ($key) {
            return $key;
        } else {
            return false;
        }
    }
Пример #3
0
 /**
  * @param string $tableName
  * @param string $schemaName
  *
  * @return array
  */
 public function describeTable($tableName, $schemaName = null)
 {
     return $this->reader->describeTable($tableName, $schemaName);
 }
Пример #4
0
 /**
  * @param \Berthe\Fetcher $fetcher
  * @return \Berthe\Fetcher
  */
 public function selectByFetcher(\Berthe\Fetcher $fetcher)
 {
     list($sql, $filterToParameter) = $this->getSqlByFetcher($fetcher);
     $resultSet = $this->db->fetchCol($sql, $filterToParameter);
     return $resultSet;
 }