/** * Retorna uma string com a relação de colunas * * @return string * */ public function renderColumns() { $columns = array(); foreach ($this->_entity->columns() as $column) { if (FALSE == isset($column->database)) { // @codeCoverageIgnoreStart continue; // @codeCoverageIgnoreEnd } $column = Column::factory($column->name, $this->_entity, 'database'); if ($column) { $columns[] = $column->render(); } } return implode(', ', $columns); }
/** * Representação textual do comando. * * @return string * */ public function render() { $column = current(preg_split('/\\s*AS\\s*/', $this->_column->render())); return sprintf('%s %s %s', $column, $this::T_COMMAND, $this->converteValue($this->_value)); }
/** * Adiciona uma coluna a Query * * <p> * Sendo $coluna uma string, sera verificado em Entity a existencia de uma coluna que corresponda ao string * informado e se nenhuma correpondencia for encontrada uma exception do tioi IllegalArgumentException sera * lancada. * </p> * <p> * Sendo $column do tipo database/Column esta sera adicionado diretamente * </p> * * @example database::Query::addColumn * <code> * <?php * # vide Query::factory * $query = Query::factory(...); * * # adiciona uma coluna a query informando o nome da mesma * $query->addColumn('columnNam'); * * # adiciona uma coluna informando um objeto * $column = Column::factory(...); * $query->addColumn($column); * ?> * </code> * * @override * <ul> * <li>Query::addColumn(string $column)</li> * <li>Query::addColumn(Column $column)</li> * </ul> * * @param $column * @return Query * @throws IllegalArgumentException * */ public function addColumn($column) { if (TRUE == is_string($column)) { $column = Column::factory($column, $this->_entity, 'database'); } $this->_select->addColumn($column); return $this; }
/** * Adiciona coluna * * @param Column $column * @return SelectAbstract * */ public function addColumn(Column $column) { if ($column->name() instanceof Expression) { $name = $column->alias(); } else { $name = $column->name(); } $this->_columns[$name] = $column; return $this; }