/** * @param array $components * @return string */ public function makeQueryContent(array $components) { $content = null; foreach ($components as $displayAttribute) { $modelToReportAdapter = static::makeModelToReportAdapterByComponentForm($displayAttribute); $itemBuilder = new DisplayAttributeReportItemQueryBuilder($displayAttribute, $this->joinTablesAdapter, $modelToReportAdapter, $this->selectQueryAdapter, $this->currencyConversionType); $itemBuilder->resolveComponentAttributeStringContent(); } return $this->selectQueryAdapter->getSelect(); }
public static function makeQuery($tableName, RedBeanModelSelectQueryAdapter $selectQueryAdapter, RedBeanModelJoinTablesQueryAdapter $joinTablesAdapter, $offset = null, $count = null, $where = null, $orderBy = null, $groupBy = null) { assert('is_string($tableName) && $tableName != ""'); assert('$offset === null || is_integer($offset) && $offset >= 0'); assert('$count === null || is_integer($count) && $count >= 1'); assert('$where === null || is_string ($where) && $where != ""'); assert('$orderBy === null || is_string ($orderBy) && $orderBy != ""'); assert('$groupBy === null || is_string ($groupBy) && $groupBy != ""'); $quote = DatabaseCompatibilityUtil::getQuote(); $sql = $selectQueryAdapter->getSelect(); $sql .= "from "; //Added ( ) around from tables to ensure precedence over joins. $joinFromPart = $joinTablesAdapter->getJoinFromQueryPart(); if ($joinFromPart !== null) { $sql .= "("; $sql .= "{$quote}{$tableName}{$quote}"; $sql .= ", {$joinFromPart}) "; } else { $sql .= "{$quote}{$tableName}{$quote}"; $sql .= ' '; } $sql .= $joinTablesAdapter->getJoinQueryPart(); $joinWherePart = $joinTablesAdapter->getJoinWhereQueryPart(); if ($where !== null) { $sql .= "where {$where}"; if ($joinWherePart != null) { $sql .= " and {$joinWherePart}"; } } elseif ($joinWherePart != null) { $sql .= " where {$joinWherePart}"; } if ($groupBy !== null) { $sql .= " group by {$groupBy}"; } if ($orderBy !== null) { $sql .= " order by {$orderBy}"; } if ($count !== null) { $sql .= " limit {$count}"; } if ($offset !== null) { $sql .= " offset {$offset}"; } return $sql; }
public function testAddSummationClause() { $quote = DatabaseCompatibilityUtil::getQuote(); $adapter = new RedBeanModelSelectQueryAdapter(); $this->assertEquals(0, $adapter->getClausesCount()); $adapter->addSummationClause('abc', 'c'); $this->assertEquals(1, $adapter->getClausesCount()); $compareString = "select sum(abc) c "; $this->assertEquals($compareString, $adapter->getSelect()); $adapter = new RedBeanModelSelectQueryAdapter(true); $this->assertEquals(0, $adapter->getClausesCount()); $adapter->addSummationClause('def', 'c'); $this->assertEquals(1, $adapter->getClausesCount()); $compareString = "select distinct sum(def) c "; $this->assertEquals($compareString, $adapter->getSelect()); }
public function testAddClauseByQueryString() { $adapter = new RedBeanModelSelectQueryAdapter(); $this->assertEquals(0, $adapter->getClausesCount()); $adapter->addClauseByQueryString('querystring'); $this->assertEquals(1, $adapter->getClausesCount()); $compareString = "select querystring "; $this->assertEquals($compareString, $adapter->getSelect()); //Test with aliasName $quote = DatabaseCompatibilityUtil::getQuote(); $adapter = new RedBeanModelSelectQueryAdapter(); $this->assertEquals(0, $adapter->getClausesCount()); $adapter->addClauseByQueryString('querystring', 'aliasName'); $this->assertEquals(1, $adapter->getClausesCount()); $compareString = "select querystring aliasName "; $this->assertEquals($compareString, $adapter->getSelect()); }