/** * @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; }
/** * @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()); }
/** * @return array */ public function getGroupBy() { return SyntaxFactory::createColumns($this->groupBy, $this->getTable()); }
/** * @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()); }
/** * @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; }
/** * @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; }
/** * @param string $table * * @return $this */ public function setTable($table) { $newTable = array($table); $this->table = SyntaxFactory::createTable($newTable); return $this; }