/** * Atualiza um Row DataGateway * @return SQLUpdate SQLUpdate Statement */ private function update() { $sql = new SQLUpdate(); $sql->setEntity($this->getEntity()); $sql->setCriteria(new SQLFilter($this->getPrimaryKey(), SQLFilter::IS_EQUAL, $this->{$this->getPrimaryKey()})); foreach ($this->data as $key => $value) { if ($key !== $this->getPrimaryKey() && $this->fieldNewValue($key)) { $sql->setRowData($key, $value); } } return $sql; }
/** * método update() * Atualiza registros de um repositório de acordo com o parâmetro critéria passado * a partir de um array associativo de nome de colunas e os valores que devem * receber * @param SQLExpression $criteria * @param array $columns Array associativo com o nome da coluna e seus valores * @return int $num Valores de linhas afetadas pela instrução */ public function update(SQLExpression $criteria, $columns = []) { $sql = new SQLUpdate(); $sql->setEntity(constant($this->class . '::TABLENAME')); $sql->setCriteria($criteria); //verifica se foi passado um array com a coluna e o valor a ser definido if (count($columns) > 0) { //define as colunas e valores a serem atualizados foreach ($columns as $key => $value) { $sql->setRowData($key, $value); } if ($conn = Connection::get()) { $result = $conn->exec($sql->getStatement()); return $result; } else { // se não tiver transação, retorna uma exceção throw new Exception('Não há transação ativa!!'); } } else { throw new Exception('Não foram definidas as colunas para atualização.'); } }