/** * @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 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; }
/** * @test */ public function itShouldCreateWhereWriter() { $writer = WriterFactory::createWhereWriter($this->writer, $this->placeholder); $this->assertSame('NilPortugues\\Sql\\QueryBuilder\\Builder\\Syntax\\WhereWriter', \get_class($writer)); }