Example #1
0
 /**
  * En base a una tabla especificada y un objeto modifica el objeto en la tabla.
  * @param string $table
  * @param \Enola\DB\Storable $object
  * @param array $excepts_vars
  * @return boolean
  * @throws \PDOException
  */
 public function saveObject($table, Storable $object, $excepts_vars = array())
 {
     try {
         //Consigo las propiedades a guardar del objeto y elimino las que correspondan
         $vars = array_diff_key($object->fields(), $excepts_vars);
         //Armo el Where
         $where = '';
         foreach ($object->keys() as $key => $value) {
             if ($where != '') {
                 $where = 'AND ';
             }
             $where .= $key . '=:' . $key . ' ';
         }
         //Armo y preparo la consulta
         $query = $this->prepareUpdate($table, $vars, $where);
         //Uno los datos a guardar mas las claves, las claves ya se incluyen en saveObject pero pueden haberse eliminaod con $excepts_vars
         $vars = array_merge($vars, $object->keys());
         //Ejecuto la consulta
         $query->execute($vars);
         $error = $query->errorInfo();
         if ($error[0] != '00000') {
             $this->catchError($error);
             return FALSE;
         } else {
             return TRUE;
         }
     } catch (\PDOException $e) {
         throw $e;
     }
 }