2017-01-14 1 views
2

Я интегрирую google datastore api в php. Я пытаюсь обновить объект в хранилище google.Как обновить определенный атрибут объекта в google datatstore?

Я должен предоставить все атрибуты, даже когда я пытаюсь обновить его только одно поле, иначе все данные будут потеряны. Также, если я попытаюсь создать сущность, давайте скажем logs Я не могу сохранить свои старые объекты при обновлении его новым. Кто-нибудь может помочь?

Привет @Frank Да У меня есть сущность по ключу, используя следующий код.

/* 
*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; 
} 

Использование вышеуказанного кода Im способно получить объект. Теперь что мне делать, чтобы обновить его? Я обновляю его, используя setUpdate. Что мне не хватает. Можете ли вы объяснить?

+1

При сохранении объекта в хранилище данных GAE весь объект сериализуется и (повторно) записывается. Если вы хотите обновить только часть своих свойств, вам нужно сначала прочитать объект, а затем изменить нужные свойства и сохранить объект. –

+1

Вы проверили библиотеку PHP GDS? Это делает много всего этого прямо (IMHO) – Tom

+0

https://github.com/tomwalder/php-gds – Tom

ответ

1

Вы пытались получить объект по ключу, прежде чем обновлять его? Затем вы сможете изменить его, не теряя свойств.

Также, если я пытаюсь создать сущность, я могу сказать, что я не могу сохранить свои старые объекты при обновлении новой.

Позволяет вызывать ваш родительский объект User и его дочерний объект Log. Вы пробовали иметь более одного объекта журнала для каждого пользователя, возможно, с помощью времени создания (с ключом пользователя, являющимся родителем, конечно)? Эффективно вы добавляете не обновляющие объекты журнала для данного пользователя для каждого события.

+0

Привет, Франк. Я обновил вопрос, пожалуйста, проверьте сейчас. – MKB

Смежные вопросы