我正在尝试使用PHP客户端库将新实体插入数据存储区,我正在使用此示例中的datastore_connect.php文件,https://github.com/amygdala/appengine_php_datastore_example
我想插入带有自动ID的实体,而不是名称。我看到有函数setId(),但我不知道如何生成正确的id。这样做的最佳做法是什么?
由于
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;
}
答案 0 :(得分:2)
您可以让Cloud Datastore通过填充突变上的insertAutoId
字段而不是upsert
字段来为您生成ID。
这是一个代码段(改编自您发布的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;
}
答案 1 :(得分:0)
如果你正在寻找一个PHP库来消除Cloud Datastore的大部分问题,你可以尝试我的新库,它位于官方google-api-php-client之上:
https://github.com/tomwalder/php-gds
这是一个示例代码段,用于创建具有自动生成ID的实体
$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的更多代码段和文档。