/**
  * @param        $alias
  * @param Select $select
  *
  * @return Column
  */
 public function selectToColumn($alias, Select $select)
 {
     $selectAsColumn = $this->write($select);
     if (!empty($selectAsColumn)) {
         $selectAsColumn = '(' . $selectAsColumn . ')';
     }
     $column = array($alias => $selectAsColumn);
     return SyntaxFactory::createColumn($column, null);
 }
 /**
  * @param Update $update
  *
  * @return string
  */
 public function writeUpdateValues(Update $update)
 {
     $assigns = array();
     foreach ($update->getValues() as $column => $value) {
         $newColumn = array($column);
         $column = $this->columnWriter->writeColumn(SyntaxFactory::createColumn($newColumn, $update->getTable()));
         $value = $this->writer->writePlaceholderValue($value);
         $assigns[] = "{$column} = {$value}";
     }
     return implode(", ", $assigns);
 }
 /**
  * @return array
  */
 public function getColumns()
 {
     $columns = \array_keys($this->values);
     return SyntaxFactory::createColumns($columns, $this->getTable());
 }
 /**
  * @param Select $select
  * @param string $selfColumn
  * @param string $refColumn
  *
  * @return Select
  */
 public function addJoin(Select $select, $selfColumn, $refColumn)
 {
     $select->isJoin(true);
     $table = $select->getTable()->getName();
     if (!isset($this->joins[$table])) {
         $newColumn = array($selfColumn);
         $select->joinCondition()->equals($refColumn, SyntaxFactory::createColumn($newColumn, $this->select->getTable()));
         $this->joins[$table] = $select;
     }
     return $this->joins[$table];
 }
 /**
  * @param string $column
  * @param string $direction
  * @param null   $table
  *
  * @return $this
  */
 public function orderBy($column, $direction = OrderBy::ASC, $table = null)
 {
     $newColumn = array($column);
     $column = SyntaxFactory::createColumn($newColumn, \is_null($table) ? $this->getTable() : $table);
     $this->orderBy[] = new OrderBy($column, $direction);
     return $this;
 }
Example #6
0
 /**
  * @return \NilPortugues\Sql\QueryBuilder\Syntax\Column
  *
  * @throws QueryException
  */
 public function getColumns()
 {
     if (\is_null($this->select->getTable())) {
         throw new QueryException('No table specified for the Select instance');
     }
     return SyntaxFactory::createColumns($this->columns, $this->select->getTable());
 }
Example #7
0
 /**
  * @return array
  */
 public function getGroupBy()
 {
     return SyntaxFactory::createColumns($this->groupBy, $this->getTable());
 }
Example #8
0
 /**
  * @param $column
  *
  * @return Column|Select
  */
 public function prepareColumn($column)
 {
     //This condition handles the "Select as a a column" special case.
     if ($column instanceof Select) {
         return $column;
     }
     $newColumn = array($column);
     return SyntaxFactory::createColumn($newColumn, $this->getTable());
 }
Example #9
0
 /**
  * @param Select $select
  *
  * @return array
  */
 public function writeFuncAsColumns(Select $select)
 {
     $funcAsColumns = $select->getColumnFuncs();
     $newColumns = [];
     if (!empty($funcAsColumns)) {
         foreach ($funcAsColumns as $alias => $value) {
             $funcName = $value['func'];
             $funcArgs = !empty($value['args']) ? '(' . implode(', ', $value['args']) . ')' : '';
             $newFuncColumn = array($alias => $funcName . $funcArgs);
             $newColumns[] = SyntaxFactory::createColumn($newFuncColumn, null);
         }
     }
     return $newColumns;
 }
Example #10
0
 /**
  * @param Where  $where
  * @param string $method
  * @param string $operation
  *
  * @return array
  */
 protected function writeWhereIn(Where $where, $method, $operation)
 {
     $collection = [];
     foreach ($where->{$method}() as $column => $values) {
         $newColumn = array($column);
         $column = SyntaxFactory::createColumn($newColumn, $where->getTable());
         $column = $this->columnWriter->writeColumn($column);
         $values = $this->writer->writeValues($values);
         $values = implode(", ", $values);
         $collection[] = "({$column} {$operation} ({$values}))";
     }
     return $collection;
 }
Example #11
0
 /**
  * @param string $table
  *
  * @return $this
  */
 public function setTable($table)
 {
     $newTable = array($table);
     $this->table = SyntaxFactory::createTable($newTable);
     return $this;
 }