/** * Update entity by adding or updating properties * * @param string $tableName Table name * @param Microsoft_WindowsAzure_Storage_TableEntity $entity Entity to update * @param boolean $verifyEtag Verify etag of the entity (used for concurrency) * @param array $properties Properties to merge. All properties will be used when omitted. * @throws Microsoft_WindowsAzure_Exception */ public function mergeEntity($tableName = '', Microsoft_WindowsAzure_Storage_TableEntity $entity = null, $verifyEtag = false, $properties = array()) { $mergeEntity = null; if (is_array($properties) && count($properties) > 0) { // Build a new object $mergeEntity = new Microsoft_WindowsAzure_Storage_DynamicTableEntity($entity->getPartitionKey(), $entity->getRowKey()); // Keep only values mentioned in $properties $azureValues = $entity->getAzureValues(); foreach ($azureValues as $key => $value) { if (in_array($value->Name, $properties)) { $mergeEntity->setAzureProperty($value->Name, $value->Value, $value->Type); } } } else { $mergeEntity = $entity; } // Ensure entity timestamp matches updated timestamp $entity->setTimestamp(new DateTime()); return $this->_changeEntity(Microsoft_Http_Client::MERGE, $tableName, $mergeEntity, $verifyEtag); }