/** * 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; } }