示例#1
0
 protected function salvar($model)
 {
     try {
         $arrayControle = get_object_vars($model);
         unset($arrayControle['conexao']);
         unset($arrayControle['tabela']);
         foreach ($arrayControle as $indice => $valor) {
             if (trim($indice) != '' && !is_null($valor)) {
                 $arrayModel[$indice] = $valor;
             }
         }
         $itens = count($arrayModel);
         $controle = 0;
         if (empty($model->id)) {
             $campos = '(';
             foreach ($arrayModel as $indice => $valor) {
                 $controle++;
                 if (trim($indice) != '' && $indice != 'id' && !is_null($valor)) {
                     $campos .= $indice;
                     if ($controle < $itens) {
                         $campos .= ',';
                     }
                 }
             }
             $campos .= ')';
         }
         $itens = count($arrayModel);
         $controle = 0;
         $query = !empty($model->id) ? 'UPDATE ' . $model::$tabela . ' SET ' : 'INSERT INTO ' . $model::$tabela . ' ' . $campos . ' VALUES ( ';
         foreach ($arrayModel as $indice => $valor) {
             $controle++;
             if (trim($indice) != '' && $indice != 'id' && !is_null($valor)) {
                 $query .= !empty($model->id) ? $indice . ' = :' . $indice : ':' . $indice;
                 if ($controle < $itens) {
                     $query .= ',';
                 }
             }
         }
         $query .= !empty($model->id) ? ' WHERE id = :id' : ' ) ';
         $result = $this->conexao->prepare($query);
         foreach ($arrayModel as $indice => $valor) {
             if (!is_null($valor)) {
                 $result->bindParam(":" . $indice, $model->{$indice}, Funcao::pegarTipoPDO($model::$tabela, $indice));
             }
         }
         if (!empty($model->id)) {
             $retorno = $result->execute();
             if (get_class($this) != "Log") {
                 Log::salvarLog($_GET['controller'], $_GET['view'], 'Foi atualizado o registro ' . $model->id);
             }
         } else {
             $result->execute();
             $retorno = $this->conexao->lastInsertId();
             if (get_class($this) != "Log") {
                 Log::salvarLog($_GET['controller'], $_GET['view'], 'Foi inserido o registro ' . $this->conexao->lastInsertId());
             }
         }
         return $retorno;
     } catch (PDOException $e) {
         echo $e->getMessage();
         exit;
         //Conexao::alertaEnviaEmail("<code>" . $e->getMessage() . "</code>", $_SERVER['SCRIPT_NAME']);
     }
 }