/** * Adds new column to collection * * @param ColumnInterface $column */ public function add(ColumnInterface $column) { $this->items[$column->getAlias()] = $column; }
/** * Adds additional where/having clauses for given dataset's column * * @param QueryBuilder $queryBuilder * @param ColumnInterface $column * @param ConditionInterface $condition */ protected function addColumnConditionToQueryBuilder(QueryBuilder $queryBuilder, ColumnInterface $column, ConditionInterface $condition) { $source = $column->getSource(); $alias = $column->getAlias(); $operator = $condition->getOperator(); $identifier = sprintf('%s_%s', $condition->getIdentifier(), $this->paramIteration++); if ($column->isAggregated()) { $expression = $queryBuilder->expr()->{$operator}($alias, ':' . $identifier); $queryBuilder->andHaving($expression); } else { $expression = $queryBuilder->expr()->{$operator}($source, ':' . $identifier); $queryBuilder->andWhere($expression); } $queryBuilder->setParameter($identifier, $condition->getValue()); }