Как мне создать подколлекции в firestore с помощью php?

Я ищу, чтобы создать эта структура пожарного депо с этой версией PHP

php -v
PHP 7.1.10-1+ubuntu14.04.1+deb.sury.org+1 (cli) (built: Sep 29 2017 17:33:22) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.10-1+ubuntu14.04.1+deb.sury.org+1, Copyright (c)
1999-2017, by Zend Technologies

Это мой код:

$path = "/xxx/firebase_auth.json";
$config = array(
"projectId" => "test",
"keyFile" => json_decode(file_get_contents($path), true)
);
$firestore = new FirestoreClient($config);
$collection = $firestore->collection('clients');
$trips = $collection->add([
'organization_id' => '3'
]);

// this line throws an error when /employees is appended to path
$document = $firestore->document('clients/'.$trips->id().'/employees');

// this block works when '/employees' is removed from document path
// but it places the data in the document, not the '/employees' subcollection
$firestore->runTransaction(function (FirestoreTransaction $transaction) use ($document) {
$transaction->create($document, [
['path' => 'roles', 'value' => array(
"IT Manager" => "John",
"Sales Manger" => "Jane",
"Customer Service Manager" => "Jack",
"Accounting Manager" => "Jill",
"Managers" => 4
)
],
['path' => 'office_location', 'value' => array(
"latitude" => 40.7406375,
"longitude" => -74.0107935
)
],
['path' => 'country', 'value' => 'USA'],
]);
});

И я получаю эту ошибку при запуске:

Exception 'InvalidArgumentException' with message 'Given path is not a valid document path.'
in /vendor/google/cloud/src/Firestore/FirestoreClient.php:248

Я прочитал о подколлекциях Google Firestore здесь: https://firebase.google.com/docs/firestore/data-model, и с этой страницы:

Чтобы понять, как работают иерархические структуры данных в Cloud Firestore,
рассмотрим пример приложения чата с сообщениями и чатами.
Вы можете создать коллекцию под названием комнаты для хранения разных комнат чата.
Теперь, когда у вас есть чаты, решите, как хранить ваши сообщения. Вы не могли бы
хочу сохранить их в документе чата. Документы в Cloud Firestore
должен быть легким, а чат может содержать большое количество
Сообщения. Тем не менее, вы можете создавать дополнительные коллекции в вашем чате
документ комнаты, как подколлекция.

Тем не менее, я использую PHP Firestore PHP SDK, и подколлекции не упоминаются: http://googlecloudplatform.github.io/google-cloud-php/#/docs/google-cloud/v0.53.0/firestore/transaction

Мне просто нужен пример того, как создать подколлекцию с PHP SDK Firestore, если это возможно.

Спасибо!

0

Решение

Вам не нужно явно создавать вложенные коллекции. Создайте ссылку на вложенную коллекцию, и вы сможете начать добавлять документы.

Вам, вероятно, не нужна транзакция, если вы просто создаете один документ:

$employeesCollection = $firestore->collection('clients/'.$trips->id().'/employees');

$newDocument = $employeesCollection->add([
['path' => 'roles', 'value' => array(
"IT Manager" => "John",
"Sales Manger" => "Jane",
"Customer Service Manager" => "Jack",
"Accounting Manager" => "Jill",
"Managers" => 4
)
],
['path' => 'office_location', 'value' => array(
"latitude" => 40.7406375,
"longitude" => -74.0107935
)
],
['path' => 'country', 'value' => 'USA'],
]);
0

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

Других решений пока нет …

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