PHPackages                             erimeilis/laravel-cloudflare-d1 - 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. erimeilis/laravel-cloudflare-d1

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

erimeilis/laravel-cloudflare-d1
===============================

Production-ready Cloudflare D1 database driver for Laravel with full Eloquent support, 20x faster bulk inserts, and complete MySQL migration tooling

1.1.0(6mo ago)6274↑133.3%2MITPHPPHP ^8.2CI passing

Since Nov 3Pushed 6mo agoCompare

[ Source](https://github.com/erimeilis/laravel-cloudflare-d1)[ Packagist](https://packagist.org/packages/erimeilis/laravel-cloudflare-d1)[ RSS](/packages/erimeilis-laravel-cloudflare-d1/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (6)Versions (4)Used By (0)

Laravel Cloudflare D1 Driver
============================

[](#laravel-cloudflare-d1-driver)

**Supercharge your Laravel apps with Cloudflare's edge database**

[![Latest Version on Packagist](https://camo.githubusercontent.com/9e836f9d765f7846a293e9cd79a1fb9563638f006c1f83c688a5c659a7b931ac/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6572696d65696c69732f6c61726176656c2d636c6f7564666c6172652d64312e737667)](https://packagist.org/packages/erimeilis/laravel-cloudflare-d1)[![Total Downloads](https://camo.githubusercontent.com/6d7ececed8be5c2d0a7ec37564b1194b4a2beb6168c226217f9538c3218c9c03/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6572696d65696c69732f6c61726176656c2d636c6f7564666c6172652d64312e737667)](https://packagist.org/packages/erimeilis/laravel-cloudflare-d1)[![Tests](https://github.com/erimeilis/laravel-cloudflare-d1/actions/workflows/tests.yml/badge.svg)](https://github.com/erimeilis/laravel-cloudflare-d1/actions/workflows/tests.yml)[![PHP Version](https://camo.githubusercontent.com/975ddb82cec28758f56227101946644a3d6577a6838d87bcad0ce5ea4eb1d7bd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6572696d65696c69732f6c61726176656c2d636c6f7564666c6172652d64312e737667)](https://packagist.org/packages/erimeilis/laravel-cloudflare-d1)[![Laravel 11+](https://camo.githubusercontent.com/d2cecae6955e5bf603ed3b6c4450a398eecfe4f8c24f77f4640f5ce7c7b135c5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d313125323025374325323031322d4646324432302e737667)](https://laravel.com)[![License: MIT](https://camo.githubusercontent.com/6f32a3e9640c0dfe221868f5caf0392d923a944247d447c7106dd27a963743c9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6572696d65696c69732f6c61726176656c2d636c6f7564666c6172652d64312e737667)](https://opensource.org/licenses/MIT)

> 🌍 Deploy your database to Cloudflare's global edge network ⚡ 20x faster bulk inserts with automatic raw SQL optimization 🔄 One-command MySQL to D1 migration 🎯 Zero-config Eloquent ORM support — just works™

---

✨ Features
----------

[](#-features)

### 🎯 Core Functionality

[](#-core-functionality)

- ✅ **Drop-in Replacement** — Works with existing Laravel database code
- 🔄 **Full Eloquent ORM** — Models, relationships, migrations, seeds... everything!
- 🛡️ **Foreign Key Constraints** — Automatically enabled (unlike standard SQLite)
- 📋 **Schema Builder Support** — Create/modify tables with familiar Laravel syntax

### ⚡ Performance &amp; Optimization

[](#-performance--optimization)

- 🚀 **20x Faster Bulk Inserts** — Automatic raw SQL conversion (47s → 2.3s on 250 rows)
- 📦 **Smart Chunking** — Leverages D1's 100KB SQL limit vs 100-parameter limit
- 🔄 **Zero Configuration** — Works transparently with `insert()`, `insertOrIgnore()`, `upsert()`
- 🎯 **Zero Overhead** — Direct REST API communication with D1
- ⏱️ **Production Tested** — Validated with real-world workloads

### 🌍 Global Distribution

[](#-global-distribution)

- 🌐 **Edge Database** — Data stored on Cloudflare's global network
- 🗺️ **Low Latency** — 50-150ms reads from anywhere in the world
- 📈 **Scales to Zero** — Pay only for what you use
- 💰 **Free Tier Friendly** — 500MB storage, 5M reads/day included

### 🔄 MySQL Migration

[](#-mysql-migration)

- 📦 **One-Command Migration** — Migrate entire MySQL database with single command
- 🎯 **Smart Schema Conversion** — Automatic MySQL→SQLite type mapping
- ✅ **Data Integrity** — Automatic validation and verification
- 🚀 **High Performance** — 33x faster with intelligent batching

### 🔧 Developer Experience

[](#-developer-experience)

- 🎯 **Laravel 11 &amp; 12 Compatible** — Tested with modern Laravel versions
- 🧪 **Full Test Coverage** — 57 automated tests, 100% passing
- 📖 **Comprehensive Docs** — Every feature explained with examples
- 💡 **Easy Setup** — 5-minute configuration, no complex setup

---

📦 Installation
--------------

[](#-installation)

```
composer require erimeilis/laravel-cloudflare-d1
```

The package will automatically register via Laravel's package discovery.

**Requirements:**

- PHP 8.2 or higher
- Laravel 11.x or 12.x
- Cloudflare account (free tier works!)

---

Getting Started with Cloudflare D1
----------------------------------

[](#getting-started-with-cloudflare-d1)

Before using this package, you need to set up a D1 database in your Cloudflare account and get your credentials.

### Step 1: Create a Cloudflare D1 Database

[](#step-1-create-a-cloudflare-d1-database)

1. **Sign up/Login to Cloudflare**

    - Go to [dash.cloudflare.com](https://dash.cloudflare.com)
    - Sign up for a free account or log in
2. **Create a D1 Database**

    - In the Cloudflare dashboard, navigate to **Workers &amp; Pages** → **D1 SQL Database**
    - Click **"Create database"**
    - Enter a database name (e.g., `my-laravel-db`)
    - Click **"Create"**
3. **Note Your Database ID**

    - After creation, you'll see your database listed
    - Click on your database name
    - Copy the **Database ID** (looks like: `a1b2c3d4-e5f6-7890-abcd-ef1234567890`)

### Step 2: Get Your Cloudflare Credentials

[](#step-2-get-your-cloudflare-credentials)

#### 🆔 Account ID

[](#-account-id)

You can find your Account ID using any of these methods:

**Method 1: From the URL (Easiest) ⚡**

1. Go to your Cloudflare dashboard: [dash.cloudflare.com](https://dash.cloudflare.com)
2. Look at the URL in your browser's address bar
3. The Account ID is the string of characters immediately after `dash.cloudflare.com/`
    - Example: `dash.cloudflare.com/`**`1234567890abcdef1234567890abcdef`**`/workers-and-pages`
    - Your Account ID: `1234567890abcdef1234567890abcdef`

**Method 2: Workers &amp; Pages Section**

1. Go to [dash.cloudflare.com](https://dash.cloudflare.com)
2. Navigate to **Workers &amp; Pages** in the left sidebar
3. Look for the **Account details** section on the right
4. Click **Click to copy** next to your Account ID

**Method 3: Account Overview API Section**

1. Go to your Account Home in the dashboard
2. Scroll down to the **API** section at the bottom of the page
3. You'll see your Account ID displayed there

#### 🔑 API Token

[](#-api-token)

1. Go to [dash.cloudflare.com/profile/api-tokens](https://dash.cloudflare.com/profile/api-tokens)
2. Click **"Create Token"**
3. Use the **"Edit Cloudflare Workers"** template OR create a custom token with these permissions:
    - **Account** → **D1** → **Edit**
4. Click **"Continue to summary"**
5. Click **"Create Token"**
6. **⚠️ IMPORTANT:** Copy your token immediately - you won't see it again!

#### 📋 Quick Summary

[](#-quick-summary)

You need three values:

- 🆔 **CLOUDFLARE\_ACCOUNT\_ID**: From dashboard URL or Workers &amp; Pages section (see Method 1 above)
- 💾 **CLOUDFLARE\_D1\_DATABASE\_ID**: From D1 database details page
- 🔑 **CLOUDFLARE\_D1\_API\_TOKEN**: Generated via API Tokens page

---

⚙️ Configuration
----------------

[](#️-configuration)

### 1. Environment Variables

[](#1-environment-variables)

Add these to your `.env` file:

```
# Get from: Dashboard sidebar
CLOUDFLARE_ACCOUNT_ID=1234567890abcdef1234567890abcdef

# Get from: D1 database details page
CLOUDFLARE_D1_DATABASE_ID=a1b2c3d4-e5f6-7890-abcd-ef1234567890

# Get from: API Tokens page (create new token)
CLOUDFLARE_D1_API_TOKEN=your_secret_token_here
```

### 2. Database Configuration

[](#2-database-configuration)

Add to `config/database.php`:

```
'connections' => [
    // ... existing connections

    'd1' => [
        'driver' => 'd1',
        'account_id' => env('CLOUDFLARE_ACCOUNT_ID'),
        'database_id' => env('CLOUDFLARE_D1_DATABASE_ID'),
        'api_token' => env('CLOUDFLARE_D1_API_TOKEN'),
        'prefix' => '',
        'prefix_indexes' => true,
    ],
],
```

### 3. Publish Configuration (Optional)

[](#3-publish-configuration-optional)

```
php artisan vendor:publish --provider="EriMeilis\CloudflareD1\D1ServiceProvider" --tag="config"
```

This creates `config/cloudflare-d1.php` for advanced configuration.

---

🧪 Quick Start Testing
---------------------

[](#-quick-start-testing)

Want to verify everything works? Here's a 2-minute test:

### Test 1: Check Connection

[](#test-1-check-connection)

```
php artisan tinker
```

```
// Test the connection
DB::connection('d1')->select('SELECT 1 as test');
// Should return: [{"test": 1}]
```

### Test 2: Create a Table

[](#test-2-create-a-table)

Create a simple migration:

```
php artisan make:migration create_test_users_table
```

Edit the migration:

```
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    protected $connection = 'd1';

    public function up(): void
    {
        Schema::connection('d1')->create('test_users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamps();
        });
    }

    public function down(): void
    {
        Schema::connection('d1')->dropIfExists('test_users');
    }
};
```

Run the migration:

```
php artisan migrate --database=d1
```

### Test 3: Insert and Query Data

[](#test-3-insert-and-query-data)

```
php artisan tinker
```

```
// Insert
DB::connection('d1')->table('test_users')->insert([
    'name' => 'Alice',
    'email' => 'alice@example.com',
    'created_at' => now(),
    'updated_at' => now(),
]);

// Query
$users = DB::connection('d1')->table('test_users')->get();
// Should return your inserted record!

// Test batching (10x faster!)
DB::connection('d1')->transaction(function () {
    for ($i = 1; $i table('test_users')->insert([
            'name' => "User {$i}",
            'email' => "user{$i}@example.com",
            'created_at' => now(),
            'updated_at' => now(),
        ]);
    }
});
// All 10 INSERTs executed in ONE batch API call! 🚀
```

### Test 4: Eloquent Model

[](#test-4-eloquent-model)

Create a model:

```
php artisan make:model TestUser
```

```
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class TestUser extends Model
{
    protected $connection = 'd1';
    protected $table = 'test_users';
    protected $fillable = ['name', 'email'];
}
```

Use it:

```
php artisan tinker
```

```
// Create
$user = App\Models\TestUser::create([
    'name' => 'Bob',
    'email' => 'bob@example.com'
]);

// Find
$user = App\Models\TestUser::find(1);

// Update
$user->update(['name' => 'Bob Updated']);

// All
$users = App\Models\TestUser::all();
```

✅ If all tests pass, you're ready to use D1 in your Laravel app!

---

📚 Usage
-------

[](#-usage)

### 🎯 Models

[](#-models)

Use D1 exactly like any other Laravel database:

```
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $connection = 'd1';
    protected $fillable = ['name', 'email'];
}

// Usage
User::create(['name' => 'Alice', 'email' => 'alice@example.com']);
$users = User::where('active', true)->get();
```

### 🏗️ Migrations

[](#️-migrations)

```
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    protected $connection = 'd1';

    public function up(): void
    {
        Schema::connection('d1')->create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamps();
        });
    }

    public function down(): void
    {
        Schema::connection('d1')->dropIfExists('users');
    }
};
```

Run migrations:

```
php artisan migrate --database=d1
```

### 🔧 Query Builder

[](#-query-builder)

```
use Illuminate\Support\Facades\DB;

// Select
$users = DB::connection('d1')
    ->table('users')
    ->where('active', true)
    ->get();

// Insert
DB::connection('d1')
    ->table('users')
    ->insert([
        'name' => 'Bob',
        'email' => 'bob@example.com',
    ]);

// Update
DB::connection('d1')
    ->table('users')
    ->where('id', 1)
    ->update(['name' => 'Bob Updated']);

// Delete
DB::connection('d1')
    ->table('users')
    ->where('id', 1)
    ->delete();
```

---

⚡ Performance Optimization
--------------------------

[](#-performance-optimization)

### 1. 🚀 Use Transactions for Bulk Operations (10x Faster!)

[](#1--use-transactions-for-bulk-operations-10x-faster)

```
DB::connection('d1')->transaction(function () {
    foreach ($users as $userData) {
        User::create($userData);
    }
});
// All INSERTs executed in a single batch API call!
```

**Performance:** 10 INSERTs go from ~1000ms to ~150ms

### 2. 🔗 Eager Load Relationships

[](#2--eager-load-relationships)

```
// ❌ Bad: N+1 queries
$users = User::all();
foreach ($users as $user) {
    echo $user->posts->count();
}

// ✅ Good: 2 queries total
$users = User::with('posts')->get();
```

### 3. 📦 Chunk Large Datasets

[](#3--chunk-large-datasets)

```
User::chunk(1000, function ($users) {
    foreach ($users as $user) {
        // Process
    }
});
```

---

🔧 Advanced Configuration
------------------------

[](#-advanced-configuration)

### 💾 Multiple D1 Databases

[](#-multiple-d1-databases)

```
// config/database.php
'connections' => [
    'd1_primary' => [
        'driver' => 'd1',
        'database_id' => env('D1_PRIMARY_DATABASE_ID'),
        // ...
    ],
    'd1_analytics' => [
        'driver' => 'd1',
        'database_id' => env('D1_ANALYTICS_DATABASE_ID'),
        // ...
    ],
],
```

### 📊 Custom Batch Size

[](#-custom-batch-size)

```
// config/cloudflare-d1.php
'batch' => [
    'enabled' => true,
    'size' => 100, // Max queries per batch (1-100)
],
```

### ⚡ Query Caching (Read-Heavy Workloads)

[](#-query-caching-read-heavy-workloads)

```
// config/cloudflare-d1.php
'cache' => [
    'enabled' => true,
    'driver' => 'redis',
    'ttl' => 300, // 5 minutes
],
```

---

🔍 How It Works
--------------

[](#-how-it-works)

1. **🔌 Custom PDO Driver**: Translates PDO calls to D1 REST API requests
2. **📦 Query Batching**: Accumulates queries in transactions → single batch API call
3. **📝 SQLite Grammar**: D1 uses SQLite syntax, so we extend Laravel's SQLite grammar
4. **🔗 Foreign Keys**: Automatically enabled (disabled by default in SQLite)

### 🏗️ Architecture

[](#️-architecture)

```
Laravel Eloquent/Query Builder
           ↓
      D1 Connection
           ↓
         D1 PDO
           ↓
    Query Batcher (batching enabled in transactions)
           ↓
     D1 API Client
           ↓
   Cloudflare D1 REST API

```

---

⚠️ Limitations
--------------

[](#️-limitations)

### 🔧 D1/SQLite Limitations

[](#-d1sqlite-limitations)

- ❌ **No FULLTEXT indexes** → Use Laravel Scout for full-text search
- ❌ **No stored procedures** → Move logic to application layer
- ⚠️ **Limited ALTER TABLE** → Some schema changes require table rebuild
- ✅ **100 parameter limit per query** → Automatically handled by this package
- 💾 **Database size:** 10 GB max (Paid plan), 500 MB (Free plan)

### 📊 Performance Characteristics

[](#-performance-characteristics)

- 🎯 **Best for:** Read-heavy workloads, globally distributed apps
- ⏱️ **Write latency:** ~50-200ms per query (50-150ms with batching)
- 🚀 **Read latency:** ~50-150ms per query
- ⚡ **Batch operations:** 10-11x faster for multiple operations

---

🛠️ Troubleshooting
------------------

[](#️-troubleshooting)

### 🔗 Foreign Key Constraint Errors

[](#-foreign-key-constraint-errors)

D1/SQLite has foreign keys disabled by default. This package automatically enables them, but if you encounter issues:

```
// Manually enable
DB::connection('d1')->statement('PRAGMA foreign_keys = ON');

// Or disable for specific operations
DB::connection('d1')->disableForeignKeyConstraints();
// ... operations ...
DB::connection('d1')->enableForeignKeyConstraints();
```

### ⚡ Slow Query Performance

[](#-slow-query-performance)

Enable query logging to identify slow queries:

```
// config/cloudflare-d1.php
'monitoring' => [
    'slow_query_threshold' => 1000, // Log queries > 1000ms
    'log_api_requests' => true,
],
```

### 🔐 API Authentication Errors

[](#-api-authentication-errors)

**Error: "D1 API request failed: Unauthorized" or "Invalid credentials"**

This means your Cloudflare credentials are incorrect or missing. Verify them:

```
# Check environment variables are loaded
php artisan tinker
>>> env('CLOUDFLARE_ACCOUNT_ID')
>>> env('CLOUDFLARE_D1_DATABASE_ID')
>>> env('CLOUDFLARE_D1_API_TOKEN')
```

If any return `null`, check:

1. **Environment file**: Ensure `.env` has the correct values (no quotes needed)
2. **Config cache**: Clear Laravel's config cache

    ```
    php artisan config:clear
    ```
3. **Credential format**:

    - Account ID: 32-character hexadecimal (e.g., `1234567890abcdef1234567890abcdef`)
    - Database ID: UUID format (e.g., `a1b2c3d4-e5f6-7890-abcd-ef1234567890`)
    - API Token: Long alphanumeric string starting with token identifier
4. **API Token permissions**: Ensure your token has **D1 Edit** permissions

    - Go to [API Tokens](https://dash.cloudflare.com/profile/api-tokens)
    - Click on your token
    - Verify it has "Account - D1 - Edit" permission

**Error: "Database not found" or "Database ID invalid"**

1. Verify the database ID is correct:

    - Go to [Cloudflare D1 Dashboard](https://dash.cloudflare.com)
    - Navigate to **Workers &amp; Pages** → **D1 SQL Database**
    - Click on your database
    - Copy the **Database ID** from the details page
2. Ensure the database exists and is associated with the correct account

**Common Mistakes:**

- ❌ Using quotes around values in `.env`: `CLOUDFLARE_ACCOUNT_ID="abc123"` (wrong)
- ✅ No quotes: `CLOUDFLARE_ACCOUNT_ID=abc123` (correct)
- ❌ Missing `.env` entry after adding to `config/database.php`
- ❌ Using old cached config after changing `.env` (run `php artisan config:clear`)
- ❌ API token without sufficient permissions

---

🔄 MySQL to D1 Migration
-----------------------

[](#-mysql-to-d1-migration)

Migrate your existing MySQL database to Cloudflare D1 with one command!

### Quick Migration

[](#quick-migration)

```
# Migrate all tables
php artisan d1:migrate-from-mysql

# Preview first (dry run)
php artisan d1:migrate-from-mysql --dry-run

# Migrate specific tables only
php artisan d1:migrate-from-mysql --tables=users,posts,comments

# Exclude specific tables
php artisan d1:migrate-from-mysql --exclude=logs,cache
```

### What Gets Migrated

[](#what-gets-migrated)

✅ **Schema Conversion**

- All MySQL data types → SQLite equivalents
- AUTO\_INCREMENT → AUTOINCREMENT
- ENUM → TEXT with CHECK constraints
- Foreign keys with CASCADE actions
- Indexes (regular and UNIQUE)

✅ **Data Migration**

- Memory-efficient chunked export
- Batch INSERT operations (33x faster)
- Progress tracking
- Automatic validation

### Migration Features

[](#migration-features)

- **One-Command Migration**: Complete database migration in a single Artisan command
- **Selective Migration**: Choose which tables to migrate with `--tables` or `--exclude`
- **Structure Only**: Migrate schema without data using `--structure-only`
- **Data Only**: Migrate data into existing tables using `--data-only`
- **Dry Run**: Preview migration plan without executing
- **Validation**: Automatic row count and data integrity verification

### Complete Migration Guide

[](#complete-migration-guide)

For detailed migration instructions, schema conversion details, troubleshooting, and best practices, see [MIGRATION\_GUIDE.md](MIGRATION_GUIDE.md).

---

🧪 Testing
---------

[](#-testing)

```
composer test
```

---

🤝 Contributing
--------------

[](#-contributing)

Contributions are welcome! Please:

1. 🍴 Fork the repository
2. 🌿 Create a feature branch
3. ✅ Add tests for new functionality
4. 🚀 Submit a pull request

---

📄 License
---------

[](#-license)

MIT License - see [LICENSE](LICENSE) file

---

**Made with 💙💛 using Laravel and Cloudflare D1**

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance68

Regular maintenance activity

Popularity23

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 91.7% 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 ~1 days

Total

2

Last Release

189d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/980758347d99b5cdd75e45db912387679945eb12bb5e307e17cfdbdff31c5750?d=identicon)[redshoes](/maintainers/redshoes)

---

Top Contributors

[![erimeilis](https://avatars.githubusercontent.com/u/55956525?v=4)](https://github.com/erimeilis "erimeilis (11 commits)")[![StyleCIBot](https://avatars.githubusercontent.com/u/11048387?v=4)](https://github.com/StyleCIBot "StyleCIBot (1 commits)")

---

Tags

cloudflare-d1laravellaraveldatabaseperformancesqliteeloquentcloudflaredatabase-migrationd1mysql-migrationedge-database

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/erimeilis-laravel-cloudflare-d1/health.svg)

```
[![Health](https://phpackages.com/badges/erimeilis-laravel-cloudflare-d1/health.svg)](https://phpackages.com/packages/erimeilis-laravel-cloudflare-d1)
```

###  Alternatives

[mongodb/laravel-mongodb

A MongoDB based Eloquent model and Query builder for Laravel

7.1k7.2M71](/packages/mongodb-laravel-mongodb)[spiritix/lada-cache

A Redis based, automated and scalable database caching layer for Laravel

591444.8k2](/packages/spiritix-lada-cache)[renoki-co/l1

Laravel integration for Cloudflare Workers services.

16113.1k](/packages/renoki-co-l1)[msafadi/laravel-eloquent-join-with

Laravel Eloquent Join With Relationships

1646.0k](/packages/msafadi-laravel-eloquent-join-with)[ntanduy/cloudflare-d1-database

Easy configuration and setup for D1 Database connections in Laravel.

215.4k](/packages/ntanduy-cloudflare-d1-database)[toponepercent/baum

Baum is an implementation of the Nested Set pattern for Eloquent models.

3154.7k](/packages/toponepercent-baum)

PHPackages © 2026

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