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.0(today)00LGPL-3.0-or-laterPHP

Since Jun 20Pushed todayCompare

[ 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 today

READMEChangelog (1)Dependencies (4)Versions (2)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 73% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity23

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

Unknown

Total

1

Last Release

0d 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 (1 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-bigquery

BigQuery Client for PHP

8918.5M49](/packages/google-cloud-bigquery)[google/cloud-storage

Cloud Storage Client for PHP

34296.4M148](/packages/google-cloud-storage)[google/cloud-firestore

Cloud Firestore Client for PHP

1814.3M32](/packages/google-cloud-firestore)[google/cloud-translate

Cloud Translation Client for PHP

20316.9M100](/packages/google-cloud-translate)[google/cloud-datastore

Cloud Datastore Client for PHP

241.2M22](/packages/google-cloud-datastore)[google/cloud-pubsub

Cloud PubSub Client for PHP

9018.2M72](/packages/google-cloud-pubsub)

PHPackages © 2026

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