Exemple #1
0
 public function ExecuteUpdate($table, $data, $where)
 {
     if (is_object($data)) {
         ModelState::ModelTreatment($data);
     }
     $data = (array) $data;
     // Ordena
     ksort($data);
     // Define os dados que ser�o atualizados
     $novosDados = NULL;
     foreach ($data as $key => $value) {
         $novosDados .= "`{$key}`=:{$key},";
     }
     $novosDados = rtrim($novosDados, ',');
     // Prepara a Query
     $sth = $this->prepare("UPDATE {$table} SET {$novosDados} WHERE {$where}");
     // Define os dados
     foreach ($data as $key => $value) {
         // Se o tipo do dado for inteiro, usa PDO::PARAM_INT, caso contr�rio, PDO::PARAM_STR
         $tipo = is_int($value) ? PDO::PARAM_INT : PDO::PARAM_STR;
         // Define o dado
         $sth->bindValue(":{$key}", $value, $tipo);
     }
     // Sucesso ou falha?
     return $sth->execute();
 }
 /**
  * Atualiza os dados no banco atraves de uma model mapeada
  * @param $model Objeto que contem os dados
  * @param $campos Seleciona os campos que quer atulizar passando por array, caso seja nulo serão atualizados todos os campos
  */
 public function Update($model, array $campos = null)
 {
     $this->OpenTransaction();
     $data = clone $model;
     if (is_object($data)) {
         ModelState::ModelTreatment($data);
     }
     $primaryKey = ModelState::GetPrimary($model);
     if ($primaryKey == null) {
         throw new UnitOfWorkException("Classe nao contem PK");
     }
     $table = $this->getTableName($data);
     $data = (array) $data;
     $novosDados = NULL;
     if ($campos == null) {
         $campos = array_keys($data);
     }
     foreach ($campos as $key) {
         $novosDados .= "`{$key}`=:{$key},";
     }
     $novosDados = rtrim($novosDados, ',');
     // Prepara a Query
     $sth = $this->prepare("UPDATE {$table} SET {$novosDados} WHERE {$primaryKey} = '" . $model->{$primaryKey} . "'");
     // Define os dados
     foreach ($campos as $key) {
         // Se o tipo do dado for inteiro, usa PDO::PARAM_INT, caso contr�rio, PDO::PARAM_STR
         $tipo = is_int($model->{$key}) ? \PDO::PARAM_INT : \PDO::PARAM_STR;
         // Define o dado
         $sth->bindValue(":{$key}", $model->{$key}, $tipo);
     }
     try {
         $sth->execute();
         $model = $this->GetById($table, $model->{$primaryKey});
     } catch (\Exception $e) {
         echo $e->getMessage();
     }
 }