读取单行数据

更新时间:
复制为 MD 格式

本文介绍如何通过 PHP SDK 读取表格存储数据表的单行数据。

注意事项

读取数据时需要提供包含自增主键列值在内的完整主键值。

前提条件

初始化Tablestore Client

方法说明

public function getRow(array $request)

$request参数说明

名称

类型

说明

table_name(必选)

string

数据表名称。

primary_key(必选)

array

主键信息,包括主键列名称和主键值。

  • 主键列数据类型包括 STRING、INTEGER 和 BINARY。

  • 主键个数和类型必须与数据表的主键保持一致。

max_versions(可选)

int

最大版本数。

  • 必须设置最大版本数和版本范围的其中一个。

  • 如果符合查询条件的数据版本数量超过设置的最大版本数,按从新到旧的顺序返回指定版本数量的数据。

time_range(可选)

array

数据版本范围。

  • 必须设置最大版本数和版本范围的其中一个。

  • 表格存储数据表的每个属性列可以有不同的数据版本,设置版本范围后,仅返回版本范围内的数据。

columns_to_get(可选)

array

指定读取的数据列,可以是主键列或属性列。

  • 不设置columns_to_get时,返回整行数据。

  • 设置columns_to_get时,如果读取的行数据不包含任何指定的数据列,将返回 null。

column_filter(可选)

array

过滤条件,详情请参见过滤器

  • 如果同时设置columns_to_getcolumn_filter,先按columns_to_get筛选符合条件的数据行,再按column_filter条件过滤数据。

transaction_id(可选)

string

局部事务ID,用于唯一标识局部事务,详情请参见局部事务

示例代码

以下示例代码读取了主键值为 row1 的单行数据。

$request = array (
    'table_name' => 'test_table',
    // 构造主键
    'primary_key' => array (
        array ('id', 'row1')
    ),
    'max_versions' => 1
);

try {
    // 调用 getRow 方法读取行数据
    $response = $client->getRow ($request);
    echo "* Read CU Cost: " . $response['consumed']['capacity_unit']['read'] . "\n";
    echo "* Write CU Cost: " . $response['consumed']['capacity_unit']['write'] . "\n";
    echo "* Row Data: " . "\n";
    echo "Primary Key: ". json_encode($response['primary_key']) . "\n";
    echo "Attribute Columns: ". json_encode($response['attribute_columns']) . "\n";
} catch (Exception $e){
    echo "Get Row failed.";
}
  • 设置读取的数据版本范围,结果只返回版本范围内的数据。

    // 设置查询的数据版本范围为当前时间往前一天
    $request['time_range'] = array (
        'start_time' => intval(microtime(true) * 1000) - 86400 * 1000,
        'end_time' => intval(microtime(true) * 1000)
    );
  • 指定读取的属性列。

    $request['columns_to_get'] = array('col2');

相关文档