/**
  * @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();
 }
Пример #2
0
 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());
 }