bahaaodeh/firestore-php

此包已被放弃,不再维护。未建议替代包。

Firestore PHP 客户端

v1.0.0 2018-04-20 12:31 UTC

This package is auto-updated.

Last update: 2021-02-23 20:11:42 UTC


README

Latest Version on Packagist Total Downloads License

此包完全基于 Firestore REST API

身份验证 / 生成 API 密钥

  1. 访问 Google Cloud Firestore API
  2. 选择您想要的项目。
  3. 从左侧菜单选择 凭据,然后从服务器密钥或 创建自己的凭据 中选择 API 密钥

安装

您可以通过 composer 安装此包。

composer require ahsankhatri/firestore-php

依赖项

绑定需要以下扩展才能正常运行

如果您使用 Composer,这些依赖项应自动处理。如果您手动安装,请确保这些扩展可用。

使用方法

初始化

$firestoreClient = new FireStoreApiClient('project-id', 'AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', [
    'database' => '(default)',
]);

添加文档

$firestoreClient->addDocument($collection, [
    'booleanTrue' => true,
    'booleanFalse' => false,
    'null' => null,
    'string' => 'abc123',
    'integer' => 123456,
    'arrayRaw' => [
        'string' => 'abc123',
    ],
    'array' => new FireStoreArray([
        'string' => 'abc123',
    ]),
    'reference' => new FireStoreReference('/users/23'),
    'object' => new FireStoreObject(['nested1' => new FireStoreObject(['nested2' => new FireStoreObject(['nested3' => 'test'])])]),
    'timestamp' => new FireStoreTimestamp,
    'geopoint' => new FireStoreGeoPoint(1,1),
]);

注意: 如果您想设置自定义的 文档 ID,请传递第三个参数,否则自动 ID 将为您生成。

或者

$document = new FireStoreDocument;
$document->setObject('sdf', new FireStoreObject(['nested1' => new FireStoreObject(['nested2' => new FireStoreObject(['nested3' => 'test'])])]));
$document->setBoolean('booleanTrue', true);
$document->setBoolean('booleanFalse', false);
$document->setNull('null', null);
$document->setString('string', 'abc123');
$document->setInteger('integer', 123456);
$document->setArray('arrayRaw', ['string'=>'abc123']);
$document->setArray('arrayObject', new FireStoreArray(['string' => 'abc123']));
$document->setTimestamp('timestamp', new FireStoreTimestamp);
$document->setGeoPoint('geopoint', new FireStoreGeoPoint(1.11,1.11));
$firestoreClient->addDocument($collection, $document, 'customDocumentId');

并且...

$document->fillValues([
    'string' => 'abc123',
    'boolean' => true,
]);

更新文档

  • 更新现有文档
$firestoreClient->updateDocument($collection, $documentId, [
    'newFieldToAdd' => new FireStoreTimestamp(new DateTime('2018-04-20 15:00:00')),
    'existingFieldToRemove' => new FireStoreDeleteAttribute
], true);

注意: 将第三个参数作为布尔值 true 传递将指示文档必须存在,反之亦然。

  • 覆盖现有文档
$firestoreClient->setDocument($collection, $documentId, [
    'newFieldToAdd' => new FireStoreTimestamp(new DateTime('2018-04-20 15:00:00')),
    'existingFieldToRemove' => new FireStoreDeleteAttribute
], [
    'exists' => true, // Indicate document must exist
]);

删除文档

$collection = 'collection/document/innerCollection';
$firestoreClient->deleteDocument($collection, $documentId);

待办事项

  • 添加了删除属性支持。
  • 添加了对 Object、Boolean、Null、String、Integer、Array、Timestamp、GeoPoint 的支持。
  • 添加了异常处理。
  • 列出所有文档和集合。
  • 支持过滤和分页。
  • 支持事务。
  • 支持索引。
  • 支持整个集合的删除。

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全性

如果您发现任何与安全性相关的问题,请通过电子邮件 ahsankhatri1992@gmail.com 而不是使用问题跟踪器来报告。

鸣谢

许可协议

MIT许可协议(MIT)。请参阅许可文件获取更多信息。