/** * @param AbstractBaseQuery $class * @param GenericBuilder $writer * @param PlaceholderWriter $placeholderWriter * @param array $parts */ public static function writeWhereCondition(AbstractBaseQuery $class, $writer, PlaceholderWriter $placeholderWriter, array &$parts) { if (!is_null($class->getWhere())) { $whereWriter = WriterFactory::createWhereWriter($writer, $placeholderWriter); $parts[] = "WHERE {$whereWriter->writeWhere($class->getWhere())}"; } }
/** * @param Select $select * * @return array */ public function writeSelectsAsColumns(Select $select) { $selectAsColumns = $select->getColumnSelects(); if (!empty($selectAsColumns)) { $selectWriter = WriterFactory::createSelectWriter($this->writer, $this->placeholderWriter); $selectAsColumns = $this->selectColumnToQuery($selectAsColumns, $selectWriter); } return $selectAsColumns; }
/** * @param GenericBuilder $writer * @param PlaceholderWriter $placeholder */ public function __construct(GenericBuilder $writer, PlaceholderWriter $placeholder) { $this->writer = $writer; $this->columnWriter = WriterFactory::createColumnWriter($this->writer, $placeholder); }
/** * @param array $havingArray * @param Select $select * @param GenericBuilder $writer * @param PlaceholderWriter $placeholder * * @return mixed */ protected function getHavingConditions(array &$havingArray, Select $select, GenericBuilder $writer, PlaceholderWriter $placeholder) { \array_walk($havingArray, function (&$having) use($select, $writer, $placeholder) { $whereWriter = WriterFactory::createWhereWriter($writer, $placeholder); $clauses = $whereWriter->writeWhereClauses($having); $having = \implode($this->writer->writeConjunction($select->getHavingOperator()), $clauses); }); return $havingArray; }
/** * @param Select $select * * @return string */ public function writeJoin(Select $select) { if (null === $this->whereWriter) { $this->whereWriter = WriterFactory::createWhereWriter($this, $this->placeholderWriter); } $sql = $select->getJoinType() ? "{$select->getJoinType()} " : ''; $sql .= 'JOIN '; $sql .= $this->writeTableWithAlias($select->getTable()); $sql .= ' ON '; $sql .= $this->whereWriter->writeWhere($select->getJoinCondition()); return $sql; }
/** * @param $subject * * @return string */ protected function writeWherePartialCondition(&$subject) { if ($subject instanceof Column) { $str = $this->columnWriter->writeColumn($subject); } elseif ($subject instanceof Select) { $selectWriter = WriterFactory::createSelectWriter($this->writer, $this->placeholderWriter); $str = '(' . $selectWriter->write($subject) . ')'; } else { $str = $this->writer->writePlaceholderValue($subject); } return $str; }
/** * @test */ public function itShouldCreateUnionAll() { $writer = WriterFactory::createUnionAllWriter($this->writer); $this->assertSame('NilPortugues\\Sql\\QueryBuilder\\Builder\\Syntax\\UnionAllWriter', \get_class($writer)); }