Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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.');
     }
 }