从谷歌应用引擎数据存储区删除和更新

时间:2010-12-09 17:08:06

标签: php google-app-engine google-cloud-datastore quercus

我使用Quercus在谷歌应用引擎上运行php并使用GAE LowLevel Api连接数据存储。 我需要示例php代码到数据存储区中的CRUD(创建,读取,更新,删除)。 我有创建和阅读示例PHP代码。

创建数据存储区的条目

<?php
import com.google.appengine.api.datastore;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.DatastoreServiceFactory;

$entity = new Entity("test"); 
$entity->setProperty('field1','value1');
$entity->setProperty('field2','value2');
$dataService = DatastoreServiceFactory::getDatastoreService();
$dataService->put($entity);
?>

查询数据存储区

<?php
import com.google.appengine.api.datastore;
import com.google.appengine.api.datastore.Query;
import com.google.appengine.api.datastore.DatastoreServiceFactory;

$q = new Query('test');
//http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Query.html
$q->addFilter('field1','EQUAL' ,'value1');
$dataService = DatastoreServiceFactory::getDatastoreService();
$prepared = $dataService->prepare($q);
foreach($prepared->asIterable() as $i) {
echo $field1 = $i->getProperty('field1');
echo $field2 = $i->getProperty('field2');
}
?>

有没有人知道如何使用php在数据存储中删除更新条目?

1 个答案:

答案 0 :(得分:1)

DatastoreService.put()调用适用于创建和更新。应用引擎数据存储区不会在API级别区分它们。所以,你的第一个例子中的代码也应该用于更新。只使用您从get()或查询中获得的现有实体。

对于删除,我没有尝试过,但根据您的示例代码,$dataService->delete($key)$dataService->delete($entity->key())都应该有效,具体取决于您是否拥有密钥或实体。