я пытаюсь вставить новую сущность, используя клиентскую библиотеку PHP, в хранилище данных, я использую файл datastore_connect.php из этого примера, https://github.com/amygdala/appengine_php_datastore_example
Я хочу вставить сущность с автоматическим идентификатором, а не имя. Я вижу, что есть функция setId (), но я не знаю, как создать правильный идентификатор. Какова лучшая практика в этом?
Спасибо
function createKeyForTestItem () {
$path = new Google_Service_Datastore_KeyPathElement();
$path->setKind("testkind");
$path->setName("testkeyname");
//$path->setId(??)
$key = new Google_Service_Datastore_Key();
$key->setPath([$path]);
return $key;
}
Cloud Datastore может создать для вас идентификатор, заполнив insertAutoId
поле на мутацию вместо upsert
поле.
Вот фрагмент кода (адаптированный из datastore_connect.php
файл, который вы разместили):
function create_key() {
$path = new Google_Service_Datastore_KeyPathElement();
$path->setKind("testkind");
// Neither name nor ID is set.
$key = new Google_Service_Datastore_Key();
$key->setPath([$path]);
return $key;
}
function create_entity() {
$entity = new Google_Service_Datastore_Entity();
$entity->setKey(create_key());
// Add properties...
return $entity;
}
function create_commit_request() {
$entity = create_entity();
$mutation = new Google_Service_Datastore_Mutation();
$mutation->setInsertAutoId([$entity]); // Causes ID to be allocated.
$req = new Google_Service_Datastore_CommitRequest();
$req->setMode('NON_TRANSACTIONAL');
$req->setMutation($mutation);
return $req;
}
Если вы ищете библиотеку PHP, чтобы снять большую часть головной боли Cloud Datastore, вы можете попробовать мою новую библиотеку, которая находится поверх официального google-api-php-client:
https://github.com/tomwalder/php-gds
А вот пример кода для создания сущности с автоматически сгенерированным идентификатором
$obj_book = new GDS\Entity();
$obj_book->title = 'Romeo and Juliet';
$obj_book->author = 'William Shakespeare';
$obj_book->isbn = '1840224339';
// Write it to Datastore
$obj_book_store->upsert($obj_book);
Больше фрагментов кода и документации по GitHub.