PHPackages                             schorts/firestore-dao - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. schorts/firestore-dao

ActiveLibrary[Database &amp; ORM](/categories/database)

schorts/firestore-dao
=====================

A type-safe, domain-driven Data Access Object (DAO) abstraction for Google Cloud Firestore in PHP. Provides consistent CRUD operations, soft/hard delete support, criteria-based queries, and transaction-aware Unit of Work integration, built on top of the schorts/shared-kernel.

v0.1.5(1mo ago)06LGPL-3.0-or-laterPHP

Since Jun 20Pushed 1mo agoCompare

[ Source](https://github.com/schorts99/firestore-dao-php)[ Packagist](https://packagist.org/packages/schorts/firestore-dao)[ RSS](/packages/schorts-firestore-dao/feed)WikiDiscussions main Synced 2w ago

READMEChangelog (6)Dependencies (8)Versions (7)Used By (0)

schorts/firestore-dao
=====================

[](#schortsfirestore-dao)

A type‑safe, domain‑driven Data Access Object (DAO) abstraction for Google Cloud Firestore in PHP.

Provides consistent CRUD operations, soft/hard delete support, criteria‑based queries, and transaction‑aware Unit of Work integration, built on top of the [schorts/shared‑kernel](https://packagist.org/packages/schorts/shared-kernel).

🚀 Installation
--------------

[](#-installation)

```
composer require schorts/firestore-dao
```

⚙️ Usage Example
----------------

[](#️-usage-example)

### Basic DAO

[](#basic-dao)

```
use Schorts\FirestoreDAO\FirestoreDAO;
use Schorts\SharedKernel\DAO\DeleteMode;

final class UserDAO extends FirestoreDAO
{
  // Extend with domain-specific methods if needed
}
```

### CRUD Operations

[](#crud-operations)

```
$userDao = new UserDAO($firestore->collection('users'), DeleteMode::SOFT);

// Create
$userDao->create($user);

// Find
$found = $userDao->findByID($user->getId()->getValue());

// Update
$userDao->update($user);

// Delete (soft delete by default)
$userDao->delete($user);

// Restore
$userDao->restore($user);
```

🔄 Transaction Support
---------------------

[](#-transaction-support)

```
$firestore->runTransaction(function ($transaction) use ($userDao) {
  $uow = new \Schorts\FirestoreDAO\UnitOfWork\FirestoreTransactionUnitOfWork($transaction);

  $user = $userDao->findByID('123', $uow);
  $user->setName('Updated Name');

  $userDao->update($user, $uow);
});
```

🗂 Features
----------

[](#-features)

- **Soft delete** with `is_deleted` and `deleted_at` fields.
- **Hard delete** for permanent removal.
- **Criteria queries** with filters, ordering, limits, offsets.
- **Geospatial queries** using Vincenty distance calculation.
- **Unit of Work** integration for transaction‑aware operations.
- **Consistent contract** across DAOs in different backends.

📖 License
---------

[](#-license)

LGPL-3.0-or-later

###  Health Score

33

—

LowBetter than 72% of packages

Maintenance91

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity28

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

6

Last Release

44d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ea91c1ff4f4f693afeb8ab8e2d00a889f79d4224557dfb6e5fbdc9b664a9e334?d=identicon)[schorts99](/maintainers/schorts99)

---

Top Contributors

[![schorts99](https://avatars.githubusercontent.com/u/20830415?v=4)](https://github.com/schorts99 "schorts99 (6 commits)")

### Embed Badge

![Health badge](/badges/schorts-firestore-dao/health.svg)

```
[![Health](https://phpackages.com/badges/schorts-firestore-dao/health.svg)](https://phpackages.com/packages/schorts-firestore-dao)
```

###  Alternatives

[google/cloud-storage

Cloud Storage Client for PHP

345102.7M168](/packages/google-cloud-storage)[google/cloud-bigquery

BigQuery Client for PHP

8919.8M55](/packages/google-cloud-bigquery)[google/cloud-datastore

Cloud Datastore Client for PHP

251.3M24](/packages/google-cloud-datastore)[google/cloud-firestore

Cloud Firestore Client for PHP

1824.6M34](/packages/google-cloud-firestore)[google/cloud-spanner

Cloud Spanner Client for PHP

21621.2k8](/packages/google-cloud-spanner)[google/cloud-translate

Cloud Translation Client for PHP

20917.8M113](/packages/google-cloud-translate)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
