gumphp / laravel-duckdb
A DuckDB based Eloquent model and Query builder for Laravel
Installs: 10
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/gumphp/laravel-duckdb
Requires
- php: ^8.2
- ext-duckdb: *
- gumphp/duckdb-ide-helper: *
- illuminate/database: ^12
- illuminate/support: ^12
README
这是一个用于 Laravel 的 DuckDB 数据库驱动,让你可以在 Laravel 应用中像使用 MySQL 或 PostgreSQL 一样简单地使用 DuckDB。
特性
- 支持 Laravel 数据库连接管理
- 支持查询构建器 (Query Builder)
- 支持 Schema 构建器 (Schema Builder)
- 支持 Eloquent ORM(有限支持)
- 与 Laravel 的数据库迁移系统集成
安装
-
安装 DuckDB PHP 扩展: https://github.com/fnvoid64/php-duckdb
-
安装 composer 包:
composer require gumphp/laravel-duckdb
配置
在 config/database.php 中添加 DuckDB 连接配置:
'duckdb' => [ 'driver' => 'duckdb', 'database' => env('DUCKDB_DATABASE', ':memory:'), 'prefix' => '', 'config' => [ 'threads' => env('DUCKDB_THREADS', 4), ], ],
在 .env 文件中设置:
DUCKDB_DATABASE=/path/to/your/database.db DUCKDB_THREADS=4
使用
基本查询
// 使用查询构建器 $users = DB::connection('duckdb')->table('users')->get(); // 插入数据 DB::connection('duckdb')->table('users')->insert([ ['name' => 'John Doe', 'email' => 'john@example.com'], ['name' => 'Jane Smith', 'email' => 'jane@example.com'] ]); // 更新数据 DB::connection('duckdb')->table('users') ->where('name', 'John Doe') ->update(['email' => 'john.doe@example.com']); // 删除数据 DB::connection('duckdb')->table('users') ->where('name', 'Jane Smith') ->delete();
Schema 操作
// 创建表 Schema::connection('duckdb')->create('users', function ($table) { $table->string('name'); $table->string('email'); }); // 删除表 Schema::connection('duckdb')->dropIfExists('users');
注意事项
在生产环境中,建议将 DuckDB 数据库文件存储在持久化存储中,而不是使用内存数据库。
在 webman 中使用
https://github.com/gumphp/webman-duckdb
许可证
MIT