protected function makeSqlQueryForRowTotals() { $selectQueryAdapter = new RedBeanModelSelectQueryAdapter(); $moduleClassName = $this->report->getModuleClassName(); $modelClassName = $moduleClassName::getPrimaryModelName(); $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter($modelClassName); $builder = new DisplayAttributesReportQueryBuilder($joinTablesAdapter, $selectQueryAdapter, $this->report->getCurrencyConversionType()); $builder->makeQueryContent($this->getDisplayAttributesForGrandTotals()); $where = $this->makeFiltersContent($joinTablesAdapter); $orderBy = null; $builder = new GroupBysReportQueryBuilder($joinTablesAdapter); $groupBy = $builder->makeQueryContent($this->getYAxisGroupBys()); $offset = null; $limit = null; return SQLQueryUtil::makeQuery($modelClassName::getTableName($modelClassName), $selectQueryAdapter, $joinTablesAdapter, $offset, $limit, $where, $orderBy, $groupBy); }
/** * @param RedBeanModelJoinTablesQueryAdapter $joinTablesAdapter * @return null|string */ protected function makeGroupBysContent(RedBeanModelJoinTablesQueryAdapter $joinTablesAdapter) { $builder = new GroupBysReportQueryBuilder($joinTablesAdapter); return $builder->makeQueryContent($this->resolveGroupBys()); }
public function testHasManyForHasManyBelongsToOnCastedUpModel() { $q = DatabaseCompatibilityUtil::getQuote(); $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('ReportModelTestItem9'); $builder = new GroupBysReportQueryBuilder($joinTablesAdapter); $groupBy = new GroupByForReportForm('ReportsTestModule', 'ReportModelTestItem9', Report::TYPE_SUMMATION); $groupBy->attributeIndexOrDerivedType = 'reportModelTestItem9s___owner__User'; $content = $builder->makeQueryContent(array($groupBy)); $compareContent = "{$q}_user{$q}.{$q}id{$q}"; $this->assertEquals($compareContent, $content); $leftTablesAndAliases = $joinTablesAdapter->getLeftTablesAndAliases(); $fromTablesAndAliases = $joinTablesAdapter->getFromTablesAndAliases(); $this->assertEquals(0, $joinTablesAdapter->getFromTableJoinCount()); $this->assertEquals(3, $joinTablesAdapter->getLeftTableJoinCount()); $this->assertEquals('reportmodeltestitem91', $leftTablesAndAliases[0]['tableAliasName']); $this->assertEquals('reportmodeltestitem9', $leftTablesAndAliases[0]['onTableAliasName']); $this->assertEquals('ownedsecurableitem', $leftTablesAndAliases[1]['tableAliasName']); $this->assertEquals('reportmodeltestitem91', $leftTablesAndAliases[1]['onTableAliasName']); $this->assertEquals('id', $leftTablesAndAliases[1]['tableJoinIdName']); $this->assertEquals('_user', $leftTablesAndAliases[2]['tableAliasName']); $this->assertEquals('ownedsecurableitem', $leftTablesAndAliases[2]['onTableAliasName']); }