/** * Update multiple entities * * No service requests are run when this method is called. * Use {@see Google\Cloud\Datastore\Transaction::commit()} to commit changes. * * Example: * ``` * $entities[0]['firstName'] = 'Bob'; * $entities[1]['firstName'] = 'John'; * * $transaction->updateBatch($entities); * $transaction->commit(); * ``` * * @param Entity[] $entities The entities to update. * @param array $options [optional] { * Configuration Options * * @type bool $allowOverwrite Entities must be updated as an entire * resource. Patch operations are not supported. Because entities * can be created manually, or obtained by a lookup or query, it * is possible to accidentally overwrite an existing record with a * new one when manually creating an entity. To provide additional * safety, this flag must be set to `true` in order to update a * record when the entity provided was not obtained through a * lookup or query. **Defaults to** `false`. * } * @return Transaction */ public function updateBatch(array $entities, array $options = []) { $options += ['allowOverwrite' => false]; $this->operation->checkOverwrite($entities, $options['allowOverwrite']); $this->operation->mutate('update', $entities, Entity::class); return $this; }
/** * Update multiple entities * * Please note that updating a record in Cloud Datastore will replace the * existing record. Adding, editing or removing a single property is only * possible by first retrieving the entire entity in its existing state. * * Update by this method is non-transactional. If you need transaction * support, use {@see Google\Cloud\Datastore\Transaction::updateBatch()}. * * Example: * ``` * $entities[0]['firstName'] = 'Bob'; * $entities[1]['firstName'] = 'John'; * * $datastore->updateBatch($entities); * ``` * * @param Entity[] $entities The entities to be updated. * @param array $options [optional] { * Configuration Options * * @type bool $allowOverwrite Entities must be updated as an entire * resource. Patch operations are not supported. Because entities * can be created manually, or obtained by a lookup or query, it * is possible to accidentally overwrite an existing record with a * new one when manually creating an entity. To provide additional * safety, this flag must be set to `true` in order to update a * record when the entity provided was not obtained through a * lookup or query. **Defaults to** `false`. * } * @return array [Response Body](https://cloud.google.com/datastore/reference/rest/v1/projects/commit#response-body) */ public function updateBatch(array $entities, array $options = []) { $options += ['allowOverwrite' => false]; $this->operation->checkOverwrite($entities, $options['allowOverwrite']); $mutations = []; foreach ($entities as $entity) { $mutations[] = $this->operation->mutation('update', $entity, Entity::class); } return $this->operation->commit($mutations, $options); }