Как создать идентификатор объекта для хранилища данных GAE в php?

я пытаюсь вставить новую сущность, используя клиентскую библиотеку 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;
}

2

Решение

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;
}
2

Другие решения

Если вы ищете библиотеку 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.

0

По вопросам рекламы [email protected]