xlited / laravel-d1
Laravel integration for Cloudflare D1.
Fund package maintenance!
icaliman
Requires
- doctrine/dbal: ^3.6
- illuminate/cache: ^10.23|^11.0
- illuminate/database: ^10.23|^11.0
- saloonphp/laravel-http-sender: ^1.2|^2.0|^3.0
- saloonphp/laravel-plugin: ^2.1|^3.0
Requires (Dev)
- laravel/legacy-factories: ^1.3
- mockery/mockery: ^1.5
- orchestra/testbench: ^8.3
- phpunit/phpunit: ^9.5.21
Suggests
- ext-pdo: Required to extend the PDO driver for Cloudflare D1.
README
Extend your PHP/Laravel application with Cloudflare D1 bindings.
π Installation
You can install the package via Composer:
composer require xlited/laravel-d1
π Usage
D1 with raw PDO
Though D1 is not connectable via SQL protocols, it can be used as a PDO driver via the package connector. This proxies the query and bindings to the D1's /query
endpoint in the Cloudflare API.
use XliteDev\LaravelD1\D1\D1Pdo; use XliteDev\LaravelD1\D1\D1PdoStatement; use XliteDev\LaravelD1\CloudflareD1Connector; $pdo = new D1Pdo( dsn: 'sqlite::memory:', // irrelevant connector: new CloudflareD1Connector( database: 'your_database_id', token: 'your_api_token', accountId: 'your_cf_account_id', ), );
D1 with Laravel
In your config/database.php
file, add a new connection:
'connections' => [ 'd1' => [ 'driver' => 'd1', 'prefix' => '', 'database' => env('CLOUDFLARE_D1_DATABASE_ID', ''), 'api' => 'https://api.cloudflare.com/client/v4', 'auth' => [ 'token' => env('CLOUDFLARE_TOKEN', ''), 'account_id' => env('CLOUDFLARE_ACCOUNT_ID', ''), ], ], ]
Then in your .env
file, set up your Cloudflare credentials:
CLOUDFLARE_TOKEN=
CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_D1_DATABASE_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
The d1
Β driver will proxy the PDO queries to the Cloudflare D1 API to run queries.
π Testing
Start the built-in Worker that simulates the Cloudflare API:
cd tests/worker
npm ci
npm run start
In a separate terminal, run the tests:
vendor/bin/phpunit
π€ Contributing
Please see CONTRIBUTING for details.
π Security
If you discover any security related issues, please email alex@renoki.org instead of using the issue tracker.