TherowFilteroption forTable::readRowsis now calledfilter:
use Google\Cloud\Bigtable\BigtableClient;
use Google\Cloud\Bigtable\V2\RowFilter;
// Only retrieve the most recent version of the cell.
$rowFilter = (new RowFilter())->setCellsPerColumnLimitFilter(1);
$bigtable = new BigtableClient(['projectId' => $projectId]);
$table = $bigtable->table($instanceId, $tableId);
$row = $table->readRow($key, [
'filter' => $rowFilter
]);
Retry Options changes
Theretriesparameter in the following RPC calls is changed toretrySettings.maxRetries:
This is done in order to be consistent across other RPC calls which use GAX's retrySettings and to be consistent across other products which mostly use theRetrySettingsfrom GAX already.
Only the maxRetries parameter is supported for now and not the other options in theRetrySettings.
Removed deprecated classes
The following deprecated classes are now removed completely. Use the specified alternatives.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-09 UTC."],[],[],null,["Version latestkeyboard_arrow_down\n\n- [2.17.1 (latest)](/php/docs/reference/cloud-bigtable/latest/migrating)\n- [2.17.0](/php/docs/reference/cloud-bigtable/2.17.0/migrating)\n- [2.16.0](/php/docs/reference/cloud-bigtable/2.16.0/migrating)\n- [2.15.0](/php/docs/reference/cloud-bigtable/2.15.0/migrating)\n- [2.14.0](/php/docs/reference/cloud-bigtable/2.14.0/migrating)\n- [2.13.0](/php/docs/reference/cloud-bigtable/2.13.0/migrating)\n- [2.12.0](/php/docs/reference/cloud-bigtable/2.12.0/migrating)\n- [2.11.1](/php/docs/reference/cloud-bigtable/2.11.1/migrating)\n- [2.9.1](/php/docs/reference/cloud-bigtable/2.9.1/migrating)\n- [2.8.0](/php/docs/reference/cloud-bigtable/2.8.0/migrating)\n- [2.7.0](/php/docs/reference/cloud-bigtable/2.7.0/migrating)\n- [2.6.3](/php/docs/reference/cloud-bigtable/2.6.3/migrating)\n- [2.5.0](/php/docs/reference/cloud-bigtable/2.5.0/migrating)\n- [2.4.0](/php/docs/reference/cloud-bigtable/2.4.0/migrating)\n- [2.3.0](/php/docs/reference/cloud-bigtable/2.3.0/migrating)\n- [2.2.1](/php/docs/reference/cloud-bigtable/2.2.1/migrating)\n- [2.1.0](/php/docs/reference/cloud-bigtable/2.1.0/migrating)\n- [2.0.1](/php/docs/reference/cloud-bigtable/2.0.1/migrating)\n- [1.32.1](/php/docs/reference/cloud-bigtable/1.32.1/migrating)\n- [1.31.1](/php/docs/reference/cloud-bigtable/1.31.1/migrating)\n- [1.30.0](/php/docs/reference/cloud-bigtable/1.30.0/migrating)\n- [1.29.2](/php/docs/reference/cloud-bigtable/1.29.2/migrating)\n- [1.28.3](/php/docs/reference/cloud-bigtable/1.28.3/migrating)\n- [1.27.0](/php/docs/reference/cloud-bigtable/1.27.0/migrating)\n- [1.26.2](/php/docs/reference/cloud-bigtable/1.26.2/migrating)\n- [1.25.0](/php/docs/reference/cloud-bigtable/1.25.0/migrating)\n- [1.24.1](/php/docs/reference/cloud-bigtable/1.24.1/migrating)\n- [1.23.0](/php/docs/reference/cloud-bigtable/1.23.0/migrating)\n- [1.22.2](/php/docs/reference/cloud-bigtable/1.22.2/migrating)\n- [1.21.1](/php/docs/reference/cloud-bigtable/1.21.1/migrating)\n- [1.20.3](/php/docs/reference/cloud-bigtable/1.20.3/migrating) \n\nMigrating Google Cloud Bigtable from V1 to V2\n=============================================\n\nHow to upgrade\n--------------\n\nUpdate your `google/cloud-bigtable` dependency to `^2.0`: \n\n {\n \"require\": {\n \"google/cloud-bigtable\": \"^2.0\"\n }\n }\n\nChanges\n-------\n\n### Filter Option change\n\nThe `rowFilter` option for `Table::readRows` is now called `filter`: \n\n use Google\\Cloud\\Bigtable\\BigtableClient;\n use Google\\Cloud\\Bigtable\\V2\\RowFilter;\n\n // Only retrieve the most recent version of the cell.\n $rowFilter = (new RowFilter())-\u003esetCellsPerColumnLimitFilter(1);\n\n $bigtable = new BigtableClient(['projectId' =\u003e $projectId]);\n $table = $bigtable-\u003etable($instanceId, $tableId);\n\n $row = $table-\u003ereadRow($key, [\n 'filter' =\u003e $rowFilter\n ]);\n\n### Retry Options changes\n\nThe `retries` parameter in the following RPC calls is changed to `retrySettings.maxRetries`:\n\n- Google\\\\Cloud\\\\Bigtable\\\\Table::mutateRows\n- Google\\\\Cloud\\\\Bigtable\\\\Table::upsert\n- Google\\\\Cloud\\\\Bigtable\\\\Table::readRows\n\nFor example: \n\n $table-\u003ereadRows([\n 'retrySettings' =\u003e [\n 'maxRetries' =\u003e 3\n ]\n ]);\n\nOR \n\n $retrySettings = RetrySettings::constructDefault();\n $retrySettings = $retrySettings-\u003ewith(['maxRetries' =\u003e 3])\n $table-\u003ereadRows([\n 'retrySettings' =\u003e $retrySettings\n ]);\n\nThis is done in order to be consistent across other RPC calls which use GAX's retrySettings and to be consistent across other products which mostly use the [RetrySettings](https://github.com/googleapis/gax-php/blob/main/src/RetrySettings.php) from GAX already.\n\nOnly the maxRetries parameter is supported for now and not the other options in the `RetrySettings`.\n\n### Removed deprecated classes\n\nThe following deprecated classes are now removed completely. Use the specified alternatives.\n\n- `Google\\Cloud\\Bigtable\\V2\\Gapic\\BigtableGapicClient`, use `Google\\Cloud\\Bigtable\\V2\\Client\\BigtableClient` instead.\n- `Google\\Cloud\\Bigtable\\V2\\BigtableClient`, use `Google\\Cloud\\Bigtable\\V2\\Client\\BigtableClient` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Gapic\\BigtableInstanceAdminGapicClient`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Client\\BigtableInstanceAdminClient` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Gapic\\BigtableTableAdminGapicClient`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Client\\BigtableTableAdminClient` instead.\n- `Google\\Cloud\\Bigtable\\V2\\MutateRowsRequest_Entry`, use `Google\\Cloud\\Bigtable\\V2\\MutateRowsRequest\\Entry` instead.\n- `Google\\Cloud\\Bigtable\\V2\\MutateRowsResponse_Entry`, use `Google\\Cloud\\Bigtable\\V2\\MutateRowsResponse\\Entry` instead.\n- `Google\\Cloud\\Bigtable\\V2\\Mutation_DeleteFromFamily`, use `Google\\Cloud\\Bigtable\\V2\\Mutation\\DeleteFromFamily` instead.\n- `Google\\Cloud\\Bigtable\\V2\\Mutation_DeleteFromColumn`, use `Google\\Cloud\\Bigtable\\V2\\Mutation\\DeleteFromColumn` instead.\n- `Google\\Cloud\\Bigtable\\V2\\Mutation_DeleteFromRow`, use `Google\\Cloud\\Bigtable\\V2\\Mutation\\DeleteFromRow` instead.\n- `Google\\Cloud\\Bigtable\\V2\\Mutation_SetCell`, use `Google\\Cloud\\Bigtable\\V2\\Mutation\\SetCell` instead.\n- `Google\\Cloud\\Bigtable\\V2\\ReadChangeStreamResponse_CloseStream`, use Google\\\\Cloud\\\\Bigtable\\\\V2\\\\ReadChangeStreamResponse\\\\CloseStream\\`\\` instead.\n- `Google\\Cloud\\Bigtable\\V2\\ReadChangeStreamResponse_DataChange_Type`, use `Google\\Cloud\\Bigtable\\V2\\ReadChangeStreamResponse\\DataChange\\Type` instead.\n- `Google\\Cloud\\Bigtable\\V2\\ReadChangeStreamResponse_DataChange`, use `Google\\Cloud\\Bigtable\\V2\\ReadChangeStreamResponse\\DataChange` instead.\n- `Google\\Cloud\\Bigtable\\V2\\ReadChangeStreamResponse_Heartbeat`, use `Google\\Cloud\\Bigtable\\V2\\ReadChangeStreamResponse\\Heartbeat` instead.\n- `Google\\Cloud\\Bigtable\\V2\\ReadChangeStreamResponse_MutationChunk_ChunkInfo`, use `Google\\Cloud\\Bigtable\\V2\\ReadChangeStreamResponse\\MutationChunk\\ChunkInfo` instead.\n- `Google\\Cloud\\Bigtable\\V2\\ReadChangeStreamResponse_MutationChunk`, use `Google\\Cloud\\Bigtable\\V2\\ReadChangeStreamResponse\\MutationChunk` instead.\n- `Google\\Cloud\\Bigtable\\V2\\ReadRowsRequest_RequestStatsView`, use `Google\\Cloud\\Bigtable\\V2\\ReadRowsRequest\\RequestStatsView` instead.\n- `Google\\Cloud\\Bigtable\\V2\\RowFilter_Chain`, use `Google\\Cloud\\Bigtable\\V2\\RowFilter\\Chain` instead.\n- `Google\\Cloud\\Bigtable\\V2\\RowFilter_Condition`, use `Google\\Cloud\\Bigtable\\V2\\RowFilter\\Condition` instead.\n- `Google\\Cloud\\Bigtable\\V2\\RowFilter_Interleave`, use `Google\\Cloud\\Bigtable\\V2\\RowFilter\\Interleave` instead.\n- `Google\\Cloud\\Bigtable\\V2\\ReadRowsResponse_CellChunk`, use `Google\\Cloud\\Bigtable\\V2\\ReadRowsResponse\\CellChunk` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\AppProfile_MultiClusterRoutingUseAny`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\AppProfile\\MultiClusterRoutingUseAny` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\AppProfile_SingleClusterRouting`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\AppProfile\\SingleClusterRouting` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Backup_State`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Backup\\State` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Cluster_ClusterAutoscalingConfig`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Cluster\\ClusterAutoscalingConfig` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Cluster_ClusterConfig`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Cluster\\ClusterConfig` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Cluster_EncryptionConfig`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Cluster\\EncryptionConfig` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Cluster_State`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Cluster\\State` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\CreateClusterMetadata_TableProgress`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\CreateClusterMetadata\\TableProgress` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\CreateClusterMetadata_TableProgress_State`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\CreateClusterMetadata\\TableProgress\\State` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\CreateTableRequest_Split`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\CreateTableRequest\\Split` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\EncryptionInfo_EncryptionType`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\EncryptionInfo\\EncryptionType` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\GcRule_Intersection`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\GcRule\\Intersection` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\GcRule_Union`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\GcRule\\Union` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Instance_State`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Instance\\State` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Instance_Type`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Instance\\Type` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\ModifyColumnFamiliesRequest_Modification`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\ModifyColumnFamiliesRequest\\Modification` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Snapshot_State`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Snapshot\\State` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Table_ClusterState`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Table\\ClusterState` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Table_ClusterState_ReplicationState`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Table\\ClusterState\\ReplicationState` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Table_TimestampGranularity`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Table\\TimestampGranularity` instead.\n- `Google\\Cloud\\Bigtable\\Admin\\V2\\Table_View`, use `Google\\Cloud\\Bigtable\\Admin\\V2\\Table\\View` instead."]]