6

我正在为我的网络应用程序使用 Google 应用引擎,并且我需要使用 NoSQL 数据库,所以我最好的选择是 Google Cloud Datastore

由于我找不到将它与php连接的方法,我无法使用它。在官方文档 中没有提到php 。我想确定有没有办法用php访问它?

4

5 回答 5

6

这个库可以帮助人们找到这个线程

旨在通过 PHP 轻松使用 Google Datatore。

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

于 2015-02-18T00:09:24.153 回答
1

没有记录从 PHP 访问 Google Cloud Datastore,但您应该能够像使用任何其他 Google API 一样使用适用于 PHP 的 Google API 客户端库。

于 2013-10-08T18:18:13.443 回答
1

https://gae-php-tips.appspot.com/2013/12/24/getting-started-with-the-cloud-datastore-on-php-app-engine-part-ii/

php 访问数据存储的良好入门入门

于 2014-07-03T15:00:30.870 回答
1

首先,使用Composer(依赖管理器)安装官方的 Google Cloud Datastore PHP API 。您可以通过添加"google/cloud-datastore": "^1.0"到 composer.json 的“require”部分并运行来做到这一点composer update

您可以使用以下命令启动本地 Datastore 模拟器:

gcloud beta emulators datastore start

这是我编写的一个帮助程序类,用于处理连接到数据存储区:

<?php
// Datastore.php
use Google\Cloud\Datastore\DatastoreClient;

class Datastore {
    private static $ds;

    /**
     * Creates or returns the Datastore instance
     *
     * @return void
     */
    public static function getOrCreate() {
        if (isset(Datastore::$ds)) return Datastore::$ds;

        // gcloud beta emulators datastore start --data-dir=_datastore
        if (Datastore::isDevEnv() == true) {
            putenv('DATASTORE_EMULATOR_HOST=http://localhost:8081');
            // To run locally, you may still need to download a credentials file from console.cloud.google.com
            //putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/datastore_creds.json');            
        }

        $datastore = new DatastoreClient([
            'projectId' => Core::getProjectId()  
            // 'keyFilePath' => 'datastore_creds.json'
        ]);

        Datastore::$ds = $datastore;
        return Datastore::$ds;
    }

    /**
     * Returns true if server running in development environment.
     *
     * @return boolean
     */
    static function isDevEnv() {
        if (isset(Core::$_isDevEnv)) return Core::$_isDevEnv;
        Core::$_isDevEnv = (strpos(getenv('SERVER_SOFTWARE'), 'Development') === 0);
        return Core::$_isDevEnv;
    }

    /**
     * Formats fields and indexes for datastore.
     * @param Datastore $ds
     * @param Key $entityKey Datastore key.
     * @param [] $fields
     * @param [string] $indexes Keys to index.
     * @return Entity
     */
    static function entityWithIndexes(DatastoreClient $ds, $entityKey, $fields, $indexes = []) {
        // Create exclude from indexes array.
        $excludedIndexes = [];
        foreach ($fields as $key => $value) {
            if (in_array($key, $indexes) == false) {
                $excludedIndexes[] = $key;
            }
        }

        $entity = $ds->entity($entityKey, $fields, [
            'excludeFromIndexes' => $excludedIndexes
        ]);
        return $entity;
    }
}

这是您将如何使用它将新实体插入数据存储区的方法

require 'vendor/autoload.php';
require 'Datastore.php';    
$ds = Datastore::getOrCreate();
$key = $ds->key('MyEntityType');
$data = [
      'name' => 'Foo!'
];
$indexes = ['name'];
$entity = Datastore::entityWithIndexes($ds, $key, $data, $indexes);
$ds->insert($entity);

如果您在使用模拟器时遇到问题,请尝试将您的代码部署到 App Engine 并查看是否有相同的错误。本地开发环境可能不稳定。

此外,请在此处查看官方 PHP 数据存储 API 文档

于 2017-09-05T15:51:11.187 回答
0

通过作曲家包含google/cloud-datastore

$ composer require google/cloud-datastore

你可以使用下面的例子。

<?php 
require 'vendor/autoload.php';

use Google\Cloud\Datastore\DatastoreClient;

$datastore = new DatastoreClient([
    'projectId' => 'my_project'
]);

// Create an entity
$bob = $datastore->entity('Person');
$bob['firstName'] = 'Bob';
$bob['email'] = 'bob@example.com';
$datastore->insert($bob);

// Update the entity
$bob['email'] = 'bobV2@example.com';
$datastore->update($bob);

// If you know the ID of the entity, you can look it up
$key = $datastore->key('Person', '12345328897844');
$entity = $datastore->lookup($key);

更多详情:https ://github.com/GoogleCloudPlatform/google-cloud-php#google-cloud-datastore-ga

于 2018-03-19T12:50:08.140 回答