/**
  * @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())}";
     }
 }
Example #2
0
 /**
  * @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;
 }
Example #3
0
 /**
  * @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;
 }
Example #5
0
 /**
  * @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));
 }