1

mysql のように、Amazon dynamodb からページネーション制限を使用して降順でレコードを取得するという問題に直面しています。現在、次のスクリプトを使用していますが、順序付けられていないレコードのリストが表示されます。最後に挿入された ID が一番上にある必要があります。

$limit      =   10;
$total = 0;
$start_key = null;
$params = array('TableName' => 'event','AttributesToGet' =>array('id','interactiondate','repname','totalamount','fooding','nonfooding','pdfdocument','isMultiple','payment_mode','interaction_type','products','programTitle','venue','workstepId','foodingOther','interaction_type_other'), 'ScanFilter'=> array('manufacturername' => array("ComparisonOperator" => "EQ", "AttributeValueList" => array(array("S" => "$manufacturername")))),'Limit'=>$limit );
$itemsArray = array();
$itemsArray = array();
$finalItemsArray = array(); 
$finalCRMRecords = array();
do{
if(!empty($start_key)){             
$params['ExclusiveStartKey'] = $start_key->getArrayCopy();
}
$response = $this->Amazon->Dynamodb->scan($params);     
if ($response->status == 200) {
$counter = (string) $response->body->Count;
$total += $counter;
foreach($response->body->Items as $itemsArray){
$finalItemsArray[]  =   $itemsArray;    
}
if($total>$limit){
$i =1;
foreach($response->body->Items as $items){
$finalItemsArray[]      =   $items;
if($i == $limit){
$start_key = $items->id->{AmazonDynamoDB::TYPE_NUMBER}->to_array();
$finalCRMRecords['data']    =   $finalItemsArray;
$finalCRMRecords['start_key']   =   $start_key;
break;
}
$i++;
}
}elseif($total<$limit){
$start_key = $response->body->LastEvaluatedKey->to_array();
}else{
$finalCRMRecords['data']    =   $finalItemsArray;
if ($response->body->LastEvaluatedKey) {
$start_key =$response->body->LastEvaluatedKey->to_array();
break;
} else {
$start_key = null;
}
$finalCRMRecords['start_key']   =   $start_key; 
}
}       
}while($start_key);

よろしく

サンディープ・クマール・シンハ

4

1 に答える 1