Uso del servicio Azure Storage Table service o de Table API de Azure Cosmos DB desde PHPHow to use Azure Storage Table service or the Azure Cosmos DB Table API from PHP

Sugerencia

El contenido de este artículo se aplica a Azure Table Storage y a Table API de Azure Cosmos DB.The content in this article applies to Azure Table storage and the Azure Cosmos DB Table API. La instancia de Table API de Azure Cosmos DB es una oferta premium que ofrece tablas con rendimiento optimizado, distribución global e índices secundarios automáticos.The Azure Cosmos DB Table API is a premium offering for table storage that offers throughput-optimized tables, global distribution, and automatic secondary indexes.

Información generalOverview

En esta guía se muestra cómo ejecutar escenarios comunes con el servicio Azure Storage Table service y Table API de Azure Cosmos DB.This guide shows you how to perform common scenarios using the Azure Storage Table service and the Azure Cosmos DB Table API. Los ejemplos están escritos en PHP y usan la biblioteca de cliente de PHP de Azure Storage Table.The samples are written in PHP and use the Azure Storage Table PHP Client Library. Entre los escenarios descritos se incluyen la creación y eliminación de una tabla, y la inserción, eliminación y consulta de entidades de una tabla.The scenarios covered include creating and deleting a table, and inserting, deleting, and querying entities in a table. Para obtener más información acerca de Azure Table service, vea la sección Pasos siguientes .For more information on the Azure Table service, see the Next steps section.

Creación de una cuenta de servicio de AzureCreate an Azure service account

Puede trabajar con tablas mediante Azure Table Storage o Azure Cosmos DB.You can work with tables using Azure Table storage or Azure Cosmos DB. Para más información acerca de las diferencias entre los servicios, consulte Ofertas de Table.To learn more about the differences between the services, see Table offerings. Debe crear una cuenta para el servicio que se va a utilizar.You'll need to create an account for the service you're going to use.

Creación de una cuenta de Azure StorageCreate an Azure storage account

La manera más sencilla de crear una cuenta de almacenamiento de Azure es mediante Azure Portal.The easiest way to create an Azure storage account is by using the Azure portal. Para obtener más información, consulte Crear una cuenta de almacenamiento.To learn more, see Create a storage account.

También se puede crear una cuenta de Azure Storage mediante Azure PowerShell o la CLI de Azure.You can also create an Azure storage account by using Azure PowerShell or Azure CLI.

Si no desea crear una cuenta de almacenamiento en este momento, también puede utilizar el emulador de Almacenamiento de Azure para ejecutar y probar el código en un entorno local.If you prefer not to create a storage account at this time, you can also use the Azure storage emulator to run and test your code in a local environment. Para más información, consulte Uso del emulador de Azure Storage para desarrollo y pruebas.For more information, see Use the Azure storage emulator for development and testing.

Creación de una cuenta de Table API de Azure Cosmos DBCreate an Azure Cosmos DB Table API account

Para obtener instrucciones sobre cómo crear una cuenta de Table API de Azure Cosmos DB, consulte Creación de una cuenta de base de datos.For instructions on creating an Azure Cosmos DB Table API account, see Create a database account.

Creación de una aplicación PHPCreate a PHP application

El único requisito para crear una aplicación PHP para obtener acceso al servicio Storage Table o a Azure Cosmos DB Table API es hacer referencia a las clases del SDK azure-storage-table para PHP desde dentro de su código.The only requirement to create a PHP application to access the Storage Table service or Azure Cosmos DB Table API is to reference classes in the azure-storage-table SDK for PHP from within your code. Puede utilizar cualquier herramienta de desarrollo para crear la aplicación, incluido el Bloc de notas.You can use any development tools to create your application, including Notepad.

En esta guía, utilizará características del servicio Storage Table o Azure Cosmos DB a las que se puede llamar desde una aplicación PHP localmente, o bien mediante código que se ejecuta en un rol web, rol de trabajo o sitio web de Azure.In this guide, you use Storage Table service or Azure Cosmos DB features that can be called from within a PHP application locally, or in code running within an Azure web role, worker role, or website.

Obtención de la biblioteca de clienteGet the client library

  1. Cree un archivo con el nombre composer.json en la raíz del proyecto y agréguele el código siguiente:Create a file named composer.json in the root of your project and add the following code to it:
    {
    "require": {
     "microsoft/azure-storage-table": "*"
    }
    }
    
  2. Descargue composer.phar en la raíz.Download composer.phar in your root.
  3. Abra un símbolo del sistema y ejecute el siguiente comando en la raíz del proyecto:Open a command prompt and execute the following command in your project root:
    php composer.phar install
    
    También puede ir a la biblioteca de cliente de PHP de la tabla de almacenamiento de Azure en GitHub para clonar el código fuente.Alternatively, go to the Azure Storage Table PHP Client Library on GitHub to clone the source code.

Adición de referencias necesariasAdd required references

Para usar el servicio Storage Table o las API de Azure Cosmos DB, debe:To use the Storage Table service or Azure Cosmos DB APIs, you must:

  • Hacer referencia al archivo autocargador mediante la instrucción require_once yReference the autoloader file using the require_once statement, and
  • Haga referencia a todas las clases que utilice.Reference any classes you use.

En el siguiente ejemplo se muestra cómo incluir el archivo autocargador y hacer referencia a la clase TableRestProxy.The following example shows how to include the autoloader file and reference the TableRestProxy class.

require_once 'vendor/autoload.php';
use MicrosoftAzure\Storage\Table\TableRestProxy;

En los ejemplos que aparecen a continuación, la instrucción require_once aparecerá siempre, pero solo se hará referencia a las clases necesarias para la ejecución del ejemplo.In the examples below, the require_once statement is always shown, but only the classes necessary for the example to execute are referenced.

Adición de una conexión del servicio Storage TableAdd a Storage Table service connection

Para crear una instancia de un cliente del servicio Storage Table, primero debe disponer de una cadena de conexión válida.To instantiate a Storage Table service client, you must first have a valid connection string. El formato de las cadenas de conexión del servicio Storage Table es:The format for the Storage Table service connection string is:

$connectionString = "DefaultEndpointsProtocol=[http|https];AccountName=[yourAccount];AccountKey=[yourKey]"

Adición de una conexión de Azure Cosmos DBAdd an Azure Cosmos DB connection

Para crear una instancia de un cliente de Azure Cosmos DB Table, primero debe disponer de una cadena de conexión válida.To instantiate an Azure Cosmos DB Table client, you must first have a valid connection string. El formato de la cadena de conexión de Azure Cosmos DB es:The format for the Azure Cosmos DB connection string is:

$connectionString = "DefaultEndpointsProtocol=[https];AccountName=[myaccount];AccountKey=[myaccountkey];TableEndpoint=[https://myendpoint/]";

Adición de una conexión del emulador de StorageAdd a Storage emulator connection

Para obtener acceso al almacenamiento del emulador:To access the emulator storage:

UseDevelopmentStorage = true

Para crear un cliente de Azure Table service o Azure Cosmos DB, debe usar la clase TableRestProxy.To create an Azure Table service client or Azure Cosmos DB client, you need to use the TableRestProxy class. Puede:You can:

  • pasarle directamente la cadena de conexión, o bienPass the connection string directly to it or
  • Use CloudConfigurationManager (CCM) para buscar la cadena de conexión en varios orígenes externos:Use the CloudConfigurationManager (CCM) to check multiple external sources for the connection string:
    • de manera predeterminada, admite un origen externo: variables de entorno.By default, it comes with support for one external source - environmental variables.
    • Puede agregar nuevos orígenes extendiendo la clase ConnectionStringSource.You can add new sources by extending the ConnectionStringSource class.

En los ejemplos descritos aquí, la cadena de conexión se pasa directamente.For the examples outlined here, the connection string is passed directly.

require_once 'vendor/autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;

$tableClient = TableRestProxy::createTableService($connectionString);

Creación de una tablaCreate a table

Puede crear una tabla con un objeto A TableRestProxy con el método createTable.A TableRestProxy object lets you create a table with the createTable method. Al crear una tabla, puede establecer un tiempo de espera para Table service.When creating a table, you can set the Table service timeout. (Para más información sobre el tiempo de espera de Table service, consulte Configuracióon de los tiempos de espera para las operaciones de Table service).(For more information about the Table service timeout, see Setting Timeouts for Table Service Operations.)

require_once 'vendor\autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;

// Create Table REST proxy.
$tableClient = TableRestProxy::createTableService($connectionString);

try    {
    // Create table.
    $tableClient->createTable("mytable");
}
catch(ServiceException $e){
    $code = $e->getCode();
    $error_message = $e->getMessage();
    // Handle exception based on error codes and messages.
    // Error codes and messages can be found here:
    // https://docs.microsoft.com/rest/api/storageservices/Table-Service-Error-Codes
}

Para información sobre las restricciones que se aplican a los nombres de las tablas, consulte Introducción al modelo de datos de Table service.For information about restrictions on table names, see Understanding the Table Service Data Model.

Adición de una entidad a una tablaAdd an entity to a table

Para agregar una entidad a una tabla, cree un nuevo objeto Entity y páselo a TableRestProxy->insertEntity.To add an entity to a table, create a new Entity object and pass it to TableRestProxy->insertEntity. Tenga en cuenta que al crear una entidad, es necesario especificar los valores de PartitionKey y RowKey.Note that when you create an entity, you must specify a PartitionKey and RowKey. Estos valores son los identificadores exclusivos de la entidad y se pueden consultar más rápidamente que las demás propiedades.These are the unique identifiers for an entity and are values that can be queried much faster than other entity properties. El sistema usa PartitionKey para distribuir automáticamente las entidades de la tabla entre numerosos nodos de Storage.The system uses PartitionKey to automatically distribute the table's entities over many Storage nodes. Las entidades con la misma PartitionKey se almacenan en el mismo nodo.Entities with the same PartitionKey are stored on the same node. (Las operaciones que afecten a entidades almacenadas en el mismo nodo se realizarán mejor que aquellas que afecten a entidades almacenadas en nodos distintos). RowKey es el identificador exclusivo de una entidad dentro de una partición.(Operations on multiple entities stored on the same node perform better than on entities stored across different nodes.) The RowKey is the unique ID of an entity within a partition.

require_once 'vendor/autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;
use MicrosoftAzure\Storage\Table\Models\Entity;
use MicrosoftAzure\Storage\Table\Models\EdmType;

// Create table REST proxy.
$tableClient = TableRestProxy::createTableService($connectionString);

$entity = new Entity();
$entity->setPartitionKey("tasksSeattle");
$entity->setRowKey("1");
$entity->addProperty("Description", null, "Take out the trash.");
$entity->addProperty("DueDate",
                        EdmType::DATETIME,
                        new DateTime("2012-11-05T08:15:00-08:00"));
$entity->addProperty("Location", EdmType::STRING, "Home");

try{
    $tableClient->insertEntity("mytable", $entity);
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here:
    // https://docs.microsoft.com/rest/api/storageservices/Table-Service-Error-Codes
    $code = $e->getCode();
    $error_message = $e->getMessage();
}

Para información sobre las propiedades y los tipos de tabla, consulte Introducción al modelo de datos de Table service.For information about Table properties and types, see Understanding the Table Service Data Model.

La clase TableRestProxy ofrece dos métodos alternativos para insertar entidades: insertOrMergeEntity y insertOrReplaceEntity.The TableRestProxy class offers two alternative methods for inserting entities: insertOrMergeEntity and insertOrReplaceEntity. Para usar estos métodos, cree una nueva Entity y pásela como un parámetro para cualquiera de los métodos.To use these methods, create a new Entity and pass it as a parameter to either method. Ambos métodos insertarán la entidad si todavía no existe.Each method will insert the entity if it does not exist. Si ya existe la entidad, insertOrMergeEntity actualizará los valores de las propiedades existentes y agregará las propiedades que no existan, mientras que insertOrReplaceEntity reemplazará por completo la entidad existente.If the entity already exists, insertOrMergeEntity updates property values if the properties already exist and adds new properties if they do not exist, while insertOrReplaceEntity completely replaces an existing entity. En el siguiente ejemplo se muestra cómo usar el método insertOrMergeEntity.The following example shows how to use insertOrMergeEntity. Si todavía no existe ninguna entidad con PartitionKey "tasksSeattle" y RowKey "1", se insertará.If the entity with PartitionKey "tasksSeattle" and RowKey "1" does not already exist, it will be inserted. Sin embargo, si ya se insertó previamente (como se muestra en el ejemplo anterior), se actualizará la propiedad DueDate y se agregará la propiedad Status.However, if it has previously been inserted (as shown in the example above), the DueDate property is updated, and the Status property is added. Las propiedades Description y Location también se actualizan, pero con valores que a efectos prácticos no provocarán ningún cambio en ellas.The Description and Location properties are also updated, but with values that effectively leave them unchanged. Si estas dos últimas propiedades no se agregaron como se muestra en el ejemplo, sino que existían en la entidad objetivo, sus valores actuales permanecerán invariables.If these latter two properties were not added as shown in the example, but existed on the target entity, their existing values would remain unchanged.

require_once 'vendor/autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;
use MicrosoftAzure\Storage\Table\Models\Entity;
use MicrosoftAzure\Storage\Table\Models\EdmType;

// Create table REST proxy.
$tableClient = TableRestProxy::createTableService($connectionString);

//Create new entity.
$entity = new Entity();

// PartitionKey and RowKey are required.
$entity->setPartitionKey("tasksSeattle");
$entity->setRowKey("1");

// If entity exists, existing properties are updated with new values and
// new properties are added. Missing properties are unchanged.
$entity->addProperty("Description", null, "Take out the trash.");
$entity->addProperty("DueDate", EdmType::DATETIME, new DateTime()); // Modified the DueDate field.
$entity->addProperty("Location", EdmType::STRING, "Home");
$entity->addProperty("Status", EdmType::STRING, "Complete"); // Added Status field.

try    {
    // Calling insertOrReplaceEntity, instead of insertOrMergeEntity as shown,
    // would simply replace the entity with PartitionKey "tasksSeattle" and RowKey "1".
    $tableClient->insertOrMergeEntity("mytable", $entity);
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here:
    // https://docs.microsoft.com/rest/api/storageservices/Table-Service-Error-Codes
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}

una sola entidadRetrieve a single entity

El método TableRestProxy->getEntity permite recuperar una sola entidad consultando sus valores de PartitionKey y RowKey.The TableRestProxy->getEntity method allows you to retrieve a single entity by querying for its PartitionKey and RowKey. En el ejemplo siguiente, la clave de partición tasksSeattle y la clave de fila 1 se pasan al método getEntity.In the example below, the partition key tasksSeattle and row key 1 are passed to the getEntity method.

require_once 'vendor/autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;

// Create table REST proxy.
$tableClient = TableRestProxy::createTableService($connectionString);

try    {
    $result = $tableClient->getEntity("mytable", "tasksSeattle", 1);
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here:
    // https://docs.microsoft.com/rest/api/storageservices/Table-Service-Error-Codes
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}

$entity = $result->getEntity();

echo $entity->getPartitionKey().":".$entity->getRowKey();

todas las entidades de una particiónRetrieve all entities in a partition

Las consultas a entidades se basan en filtros (para más información, consulte Consulta de tablas y entidades).Entity queries are constructed using filters (for more information, see Querying Tables and Entities). Para recuperar todas las entidades de una partición, utilice el filtro "PartitionKey eq partition_name".To retrieve all entities in partition, use the filter "PartitionKey eq partition_name". En el siguiente ejemplo se muestra cómo recuperar todas las entidades de la partición tasksSeattle pasando un filtro al método queryEntities .The following example shows how to retrieve all entities in the tasksSeattle partition by passing a filter to the queryEntities method.

require_once 'vendor/autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;

// Create table REST proxy.
$tableClient = TableRestProxy::createTableService($connectionString);

$filter = "PartitionKey eq 'tasksSeattle'";

try    {
    $result = $tableClient->queryEntities("mytable", $filter);
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here:
    // https://docs.microsoft.com/rest/api/storageservices/Table-Service-Error-Codes
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}

$entities = $result->getEntities();

foreach($entities as $entity){
    echo $entity->getPartitionKey().":".$entity->getRowKey()."<br />";
}

un subconjunto de entidades de una particiónRetrieve a subset of entities in a partition

El mismo patrón utilizado en el ejemplo anterior se puede aplicar a la recuperación de cualquier subconjunto de entidades de una partición.The same pattern used in the previous example can be used to retrieve any subset of entities in a partition. El subconjunto de entidades que recupere dependerá del filtro que utilice (para más información, consulte Consulta de tablas y entidades). En el siguiente ejemplo se muestra cómo usar un filtro para recuperar todas las entidades con un valor concreto para Location y un valor para DueDate anterior a una fecha determinada.The subset of entities you retrieve are determined by the filter you use (for more information, see Querying Tables and Entities).The following example shows how to use a filter to retrieve all entities with a specific Location and a DueDate less than a specified date.

require_once 'vendor/autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;

// Create table REST proxy.
$tableClient = TableRestProxy::createTableService($connectionString);

$filter = "Location eq 'Office' and DueDate lt '2012-11-5'";

try    {
    $result = $tableClient->queryEntities("mytable", $filter);
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here:
    // https://docs.microsoft.com/rest/api/storageservices/Table-Service-Error-Codes
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}

$entities = $result->getEntities();

foreach($entities as $entity){
    echo $entity->getPartitionKey().":".$entity->getRowKey()."<br />";
}

un subconjunto de propiedades de las entidadesRetrieve a subset of entity properties

Es posible recuperar un subconjunto de propiedades de las entidades mediante una consulta.A query can retrieve a subset of entity properties. Esta técnica, denominada proyección, reduce el ancho de banda y puede mejorar el rendimiento de las consultas, en especial en el caso de entidades de gran tamaño.This technique, called projection, reduces bandwidth and can improve query performance, especially for large entities. Para especificar la propiedad que desea recuperar, pase el nombre de la propiedad al método Query->addSelectField.To specify a property to retrieve, pass the name of the property to the Query->addSelectField method. Puede llamar a este método varias veces para agregar más propiedades.You can call this method multiple times to add more properties. Tras ejecutar TableRestProxy->queryEntities, las entidades que se recuperen solo presentarán las propiedades seleccionadas.After executing TableRestProxy->queryEntities, the returned entities will only have the selected properties. (Si desea recuperar un subconjunto de entidades de tabla, utilice un filtro tal y como se muestra en las consultas anteriores).(If you want to return a subset of Table entities, use a filter as shown in the queries above.)

require_once 'vendor/autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;
use MicrosoftAzure\Storage\Table\Models\QueryEntitiesOptions;

// Create table REST proxy.
$tableClient = TableRestProxy::createTableService($connectionString);

$options = new QueryEntitiesOptions();
$options->addSelectField("Description");

try    {
    $result = $tableClient->queryEntities("mytable", $options);
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here:
    // https://docs.microsoft.com/rest/api/storageservices/Table-Service-Error-Codes
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}

// All entities in the table are returned, regardless of whether
// they have the Description field.
// To limit the results returned, use a filter.
$entities = $result->getEntities();

foreach($entities as $entity){
    $description = $entity->getProperty("Description")->getValue();
    echo $description."<br />";
}

Actualización de una entidadUpdate an entity

Puede actualizar una entidad existente con los métodos Entity->setProperty y Entity->addProperty en la entidad y, a continuación, con una llamada a TableRestProxy->updateEntity.You can update an existing entity by using the Entity->setProperty and Entity->addProperty methods on the entity, and then calling TableRestProxy->updateEntity. En el siguiente ejemplo se recupera una entidad, se modifica una propiedad, se elimina otra propiedad y se agrega una nueva propiedad.The following example retrieves an entity, modifies one property, removes another property, and adds a new property. Tenga en cuenta que para eliminar una propiedad debe establecer su valor en null.Note that you can remove a property by setting its value to null.

require_once 'vendor/autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;
use MicrosoftAzure\Storage\Table\Models\Entity;
use MicrosoftAzure\Storage\Table\Models\EdmType;

// Create table REST proxy.
$tableClient = TableRestProxy::createTableService($connectionString);

$result = $tableClient->getEntity("mytable", "tasksSeattle", 1);

$entity = $result->getEntity();
$entity->setPropertyValue("DueDate", new DateTime()); //Modified DueDate.
$entity->setPropertyValue("Location", null); //Removed Location.
$entity->addProperty("Status", EdmType::STRING, "In progress"); //Added Status.

try    {
    $tableClient->updateEntity("mytable", $entity);
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here:
    // https://docs.microsoft.com/rest/api/storageservices/Table-Service-Error-Codes
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}

Eliminación de una entidadDelete an entity

Para eliminar una entidad, pase el nombre de la tabla y los valores PartitionKey y RowKey de la entidad al método TableRestProxy->deleteEntity.To delete an entity, pass the table name, and the entity's PartitionKey and RowKey to the TableRestProxy->deleteEntity method.

require_once 'vendor/autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;

// Create table REST proxy.
$tableClient = TableRestProxy::createTableService($connectionString);

try    {
    // Delete entity.
    $tableClient->deleteEntity("mytable", "tasksSeattle", "2");
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here:
    // https://docs.microsoft.com/rest/api/storageservices/Table-Service-Error-Codes
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}

En las comprobaciones de simultaneidad, puede determinar que se elimine la propiedad Etag de una entidad utilizando el método DeleteEntityOptions->setEtag y pasando el objeto DeleteEntityOptions a deleteEntity como cuarto parámetro.For concurrency checks, you can set the Etag for an entity to be deleted by using the DeleteEntityOptions->setEtag method and passing the DeleteEntityOptions object to deleteEntity as a fourth parameter.

operaciones de tablaBatch table operations

El método TableRestProxy->batch permite ejecutar varias operaciones en una única solicitud.The TableRestProxy->batch method allows you to execute multiple operations in a single request. Este patrón consiste en agregar operaciones al objeto BatchRequest y, a continuación, pasar el objeto BatchRequest al método TableRestProxy->batch.The pattern here involves adding operations to BatchRequest object and then passing the BatchRequest object to the TableRestProxy->batch method. Para agregar una operación a un objeto BatchRequest , puede llamar a cualquiera de los siguientes métodos varias veces:To add an operation to a BatchRequest object, you can call any of the following methods multiple times:

  • addInsertEntity (agrega una operación insertEntity)addInsertEntity (adds an insertEntity operation)
  • addUpdateEntity (agrega una operación updateEntity)addUpdateEntity (adds an updateEntity operation)
  • addMergeEntity (agrega una operación mergeEntity)addMergeEntity (adds a mergeEntity operation)
  • addInsertOrReplaceEntity (agrega una operación insertOrReplaceEntity)addInsertOrReplaceEntity (adds an insertOrReplaceEntity operation)
  • addInsertOrMergeEntity (agrega una operación insertOrMergeEntity)addInsertOrMergeEntity (adds an insertOrMergeEntity operation)
  • addDeleteEntity (agrega una operación deleteEntity)addDeleteEntity (adds a deleteEntity operation)

En el siguiente ejemplo se muestra cómo ejecutar las operaciones insertEntity y deleteEntity en una única solicitud.The following example shows how to execute insertEntity and deleteEntity operations in a single request.

require_once 'vendor/autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;
use MicrosoftAzure\Storage\Table\Models\Entity;
use MicrosoftAzure\Storage\Table\Models\EdmType;
use MicrosoftAzure\Storage\Table\Models\BatchOperations;

// Configure a connection string for Storage Table service.
$connectionString = "DefaultEndpointsProtocol=[http|https];AccountName=[yourAccount];AccountKey=[yourKey]"

// Create table REST proxy.
$tableClient = TableRestProxy::createTableService($connectionString);

// Create list of batch operation.
$operations = new BatchOperations();

$entity1 = new Entity();
$entity1->setPartitionKey("tasksSeattle");
$entity1->setRowKey("2");
$entity1->addProperty("Description", null, "Clean roof gutters.");
$entity1->addProperty("DueDate",
                        EdmType::DATETIME,
                        new DateTime("2012-11-05T08:15:00-08:00"));
$entity1->addProperty("Location", EdmType::STRING, "Home");

// Add operation to list of batch operations.
$operations->addInsertEntity("mytable", $entity1);

// Add operation to list of batch operations.
$operations->addDeleteEntity("mytable", "tasksSeattle", "1");

try    {
    $tableClient->batch($operations);
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here:
    // https://docs.microsoft.com/rest/api/storageservices/Table-Service-Error-Codes
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}

Para más información sobre el procesamiento por lotes de las operaciones de Table, consulte Transacciones con grupos de entidades.For more information about batching Table operations, see Performing Entity Group Transactions.

Eliminar una tablaDelete a table

Finalmente, para eliminar una tabla, pase su nombre al método TableRestProxy->deleteTable.Finally, to delete a table, pass the table name to the TableRestProxy->deleteTable method.

require_once 'vendor/autoload.php';

use MicrosoftAzure\Storage\Table\TableRestProxy;
use MicrosoftAzure\Storage\Common\Exceptions\ServiceException;

// Create table REST proxy.
$tableClient = TableRestProxy::createTableService($connectionString);

try    {
    // Delete table.
    $tableClient->deleteTable("mytable");
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here:
    // https://docs.microsoft.com/rest/api/storageservices/Table-Service-Error-Codes
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}

Pasos siguientesNext steps

Ahora que está familiarizado con los aspectos básicos de Azure Table service y Azure Cosmos DB, use estos vínculos para obtener más información.Now that you've learned the basics of the Azure Table service and Azure Cosmos DB, follow these links to learn more.