/** * @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); }
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; } }
/** * @param string $tableName * @param string $schemaName * * @return array */ public function describeTable($tableName, $schemaName = null) { return $this->reader->describeTable($tableName, $schemaName); }
/** * @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; }