示例#1
0
 /**
  * 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);
 }