/** * @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); }
/** * @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; }
/** * @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; }