/** * (non-PHPdoc). * * @see Alpha\Model\ActiveRecordProviderInterface::saveAttribute() */ public function saveAttribute($attribute, $value) { self::$logger->debug('>>saveAttribute(attribute=[' . $attribute . '], value=[' . $value . '])'); // assume that it is a persistent object that needs to be updated $sqlQuery = 'UPDATE ' . $this->BO->getTableName() . ' SET ' . $attribute . '=?, version_num = ? WHERE OID=?;'; $this->BO->setLastQuery($sqlQuery); $stmt = self::getConnection()->stmt_init(); $newVersionNumber = $this->BO->getVersionNumber()->getValue() + 1; if ($stmt->prepare($sqlQuery)) { if ($this->BO->getPropObject($attribute) instanceof Integer) { $bindingsType = 'i'; } else { $bindingsType = 's'; } $stmt->bind_param($bindingsType . 'ii', $value, $newVersionNumber, $this->BO->getOID()); self::$logger->debug('Binding params [' . $bindingsType . 'i, ' . $value . ', ' . $this->BO->getOID() . ']'); $stmt->execute(); } else { throw new FailedSaveException('Failed to save attribute, error is [' . $stmt->error . '], query [' . $this->BO->getLastQuery() . ']'); } $stmt->close(); $this->BO->set($attribute, $value); $this->BO->set('version_num', $newVersionNumber); if ($this->BO->getMaintainHistory()) { $this->BO->saveHistory(); } self::$logger->debug('<<saveAttribute'); }
/** * (non-PHPdoc). * * @see Alpha\Model\ActiveRecordProviderInterface::saveAttribute() */ public function saveAttribute($attribute, $value) { self::$logger->debug('>>saveAttribute(attribute=[' . $attribute . '], value=[' . $value . '])'); // assume that it is a persistent object that needs to be updated $sqlQuery = 'UPDATE ' . $this->BO->getTableName() . ' SET ' . $attribute . '=:attribute, version_num =:version WHERE OID=:OID;'; $this->BO->setLastQuery($sqlQuery); $stmt = self::getConnection()->prepare($sqlQuery); $newVersionNumber = $this->BO->getVersionNumber()->getValue() + 1; if ($stmt instanceof SQLite3Stmt) { if ($this->BO->getPropObject($attribute) instanceof Integer) { $stmt->bindValue(':attribute', $value, SQLITE3_INTEGER); } else { $stmt->bindValue(':attribute', $value, SQLITE3_TEXT); } $stmt->bindValue(':version', $newVersionNumber, SQLITE3_INTEGER); $stmt->bindValue(':OID', $this->BO->getOID(), SQLITE3_INTEGER); $stmt->execute(); } else { throw new FailedSaveException('Failed to save attribute, error is [' . self::getLastDatabaseError() . '], query [' . $this->BO->getLastQuery() . ']'); } $stmt->close(); $this->BO->set($attribute, $value); $this->BO->set('version_num', $newVersionNumber); if ($this->BO->getMaintainHistory()) { $this->BO->saveHistory(); } self::$logger->debug('<<saveAttribute'); }