Может кто-нибудь сказать мне, что пытается сказать следующее сообщение об ошибке?
Неустранимая ошибка: необработанное исключение InvalidArgumentException с
сообщение «Ключ записи не существует в предоставленном массиве.» в
/vendor/google/cloud/Core/src/ArrayTrait.php:38
Stack trace:
#0 /vendor/google/cloud/Firestore/src/Connection/Grpc.php(127): Google\Cloud\Firestore\Connection\Grpc->pluck('writes', Array)
#1 /vendor/google/cloud/Firestore/src/WriteBatch.php(381): Google\Cloud\Firestore\Connection\Grpc->commit(Array)
#2 import.php(45): Google\Cloud\Firestore\WriteBatch->commit()
#3 {main} thrown in /vendor/google/cloud/Core/src/ArrayTrait.php on line 38
мой код выглядит так:
$batch = $project->db->batch();
foreach($memberList as $member){
$addedDocRef = $collection->newDocument();
$data["id"] = $addedDocRef->id();
$data["creation"] = $this->generateCreation();
$data["publication"] = $this->generatePublication();
$batch->create($addedDocRef, $data);
}
$batch->commit();
Он сообщает вам, что вы выполняете коммит, но пакет не содержит операций. Возможно, когда ваш $ memberList пуст, эта ошибка появляется. Простой способ предотвратить ошибку:
if (! empty($memberList)) {
$batch->commit();
}
Кроме того, вы уверены, что $ batch-> create () существует? Вы должны использовать метод set (). Вот последний док пожарного магазина:
$batch = $db->batch();
# Set the data for NYC
$nycRef = $db->collection('cities')->document('NYC');
$batch->set($nycRef, [
'name' => 'New York City'
]);
# Update the population for SF
$sfRef = $db->collection('cities')->document('SF');
$batch->update($sfRef, [
['path' => 'population', 'value' => 1000000]
]);
# Delete LA
$laRef = $db->collection('cities')->document('LA');
$batch->delete($laRef);
# Commit the batch
$batch->commit();
Других решений пока нет …