How to access Google Cloud Data Warehouse using php?

I use the Google engine for my web application and I need to use a NoSQL database, so my best option is Google cloud storage

Since I cannot find a way to associate it with php, I cannot use it. The official php documentation is not mentioned. I want to make sure there is a way to access it using php?

+6
source share
5 answers

This library can help people find this thread.

Designed to simplify the use of Google Datatore with PHP.

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

+5
source

Access to Google Cloud Datastore with PHP is not documented, but you should be able to use the Google APIs API Client Library for PHP , like any other Google APIs.

+1
source

First install the official Google Cloud Datastore PHP API using Composer (dependency manager). You can do this by adding "google/cloud-datastore": "^1.0" to the "require" section of your composer.json and running composer update

You can start the local data warehouse emulator with the command:

 gcloud beta emulators datastore start 

Here the helper class wrote that the pens are connected to the data store:

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

Here you can use it to insert a new object into the data warehouse

 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); 

If you have problems with the emulator, try deploying your code in the App Engine and see if you have the same error. The local development environment may be uneven.

Also, check out the official Datastore PHP API docs here .

+1
source

Enable google/cloud-datastore library via composer

$ composer require google/cloud-datastore

and you can use it as an example below.

 <?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); 

More details: https://github.com/GoogleCloudPlatform/google-cloud-php#google-cloud-datastore-ga

0
source

Source: https://habr.com/ru/post/955391/


All Articles