PHP에서 Google datastore api를 통합하려고합니다. Google datastore에서 엔티티를 업데이트하려고합니다.Google datatstore에서 엔티티의 특정 속성을 업데이트하는 방법은 무엇입니까?
$property_map [ 'full_name' ] = set_string_value(isset($data [ 'full_name' ]) ? $data [ 'full_name' ] : $data [ 'name' ]);
$property_map [ 'email' ] = set_string_value($data [ 'email' ]);
$property_map [ 'password' ] = set_string_value(isset($data [ 'password' ]) ? md5($data [ 'password' ]) : md5(rand()), true);
$property_map [ 'country' ] = set_string_value(isset($data [ 'country' ]) ? $data [ 'country' ] : 'null');
$property_map [ 'timezone' ] = set_string_value(isset($data [ 'timezone' ]) ? $data [ 'timezone' ] : 'America/Chicago');
$property_map [ 'type' ] = set_string_value('free');
모든 필드가 하나만 업데이트되는 경우에도 모든 속성을 제공해야합니다. 그렇지 않으면 모든 데이터가 손실됩니다. 또한 하위 엔티티를 만들려고하면 logs
라고 말하면 새 엔티티로 업데이트 할 때 이전 엔티티를 유지할 수 없습니다. 아무도 도와 줄 수 있니?
안녕하세요 @ 프랭크 예 다음 코드를 사용하여 키를 사용하여 엔티티를 얻었습니다.
/*
*Function to lookup an entity.
*/
function lookup_request($entity_kind,$entity_id){
$instance = & get_instance();
$service = set_google_datastore();
$req = get_entity($entity_kind,$entity_id);
return $service->projects->lookup($instance->config->item('google_project_id'),$req,[]);
}
/*
*Function to set datatsore instance.
*/
function set_google_datastore(){
return new Google_Service_Datastore(google_set_client());
}
/*
*Function to set mutation to get entity.
*/
function get_entity($entity_kind,$entity_id){
$path = new Google_Service_Datastore_PathElement();
$path->setKind($entity_kind);
$path->setId($entity_id);
$key = new Google_Service_Datastore_Key();
$key->setPath([$path]);
$req = new Google_Service_Datastore_LookupRequest();
$req->setKeys($key);
return $req;
}
위의 코드를 사용하면 개체를 가져올 수 있습니다. 이제 업데이트하려면 어떻게해야합니까? setUpdate
을 사용하여 업데이트 중입니다. 내가 뭘 놓치고 설명 할 수 있니?
GAE 데이터 저장소에 엔티티를 저장하면 전체 엔티티가 직렬화되어 (다시) 쓰여집니다. 해당 속성의 하위 집합 만 업데이트하려면 먼저 엔티티를 읽은 다음 원하는 속성을 수정하고 엔티티를 저장해야합니다. –
PHP GDS 라이브러리를 체크 아웃 한 적이 있습니까? 이걸 똑바로 많이 만듭니다. (IMHO) – Tom
https://github.com/tomwalder/php-gds – Tom