fastd / database
This package is abandoned and no longer maintained.
The author suggests using the fastd/databaseabandon package instead.
v8.0.0
2026-05-28 09:38 UTC
Requires
- php: >=8.2
- ext-pdo: *
- catfan/medoo: ^2.2
Requires (Dev)
- phpunit/phpunit: ^9.6
This package is auto-updated.
Last update: 2026-05-28 13:07:56 UTC
README
FastD MedooDB 是基于 Medoo 的数据库组件,提供简洁的数据库操作接口,支持多连接池管理和 FastD 框架集成。
✨ 特性
- 🎯 基于 Medoo: 继承 Medoo 的所有功能,轻量且高效
- 🔗 连接池管理: 支持多数据库连接池,自动管理连接
- 🔌 多数据库支持: MySQL、PostgreSQL、SQLite、MariaDB、MSSQL 等
- 🚀 FastD 集成: 完美集成 FastD 框架,支持服务提供者
- ⚡ 自动重连: 连接断开时自动重连
- 🎨 简洁 API: 链式调用,简单易用
📋 环境要求
- PHP: >= 8.2
- 扩展:
- ext-pdo
- ext-pdo_mysql (MySQL)
- ext-pdo_sqlite (SQLite)
- 或其他需要的 PDO 驱动
- 依赖:
- catfan/medoo ^2.2
📦 安装
composer require fastd/medoodb
🚀 快速开始
1. 基本使用
<?php use FastD\MedooDB\Database; // 创建数据库连接 $database = new Database([ 'type' => 'mysql', 'host' => 'localhost', 'database' => 'test', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8mb4', 'port' => 3306, 'prefix' => '', ]); // 查询数据 $users = $database->select('users', '*'); // 条件查询 $users = $database->select('users', '*', [ 'status' => 1, 'ORDER' => 'created_at DESC', 'LIMIT' => 10 ]); // 插入数据 $database->insert('users', [ 'name' => 'John Doe', 'email' => 'john@example.com' ]); // 更新数据 $database->update('users', [ 'status' => 1 ], [ 'id' => 1 ]); // 删除数据 $database->delete('users', [ 'status' => 0 ]);
2. SQLite 内存数据库(测试用)
<?php use FastD\MedooDB\Database; // 使用 SQLite 内存数据库 $database = new Database([ 'type' => 'sqlite', 'database' => ':memory:', 'charset' => 'utf8', ]); // 创建表 $database->query("CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL )"); // 插入数据 $database->insert('users', [ 'name' => 'Test User', 'email' => 'test@example.com' ]); // 查询 $users = $database->select('users', '*'); print_r($users);
3. 数据库连接池
<?php use FastD\MedooDB\DatabasePool; // 配置多个数据库连接 $config = [ 'local' => [ 'type' => 'mysql', 'host' => 'localhost', 'database' => 'app_db', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8mb4', ], 'analytics' => [ 'type' => 'mysql', 'host' => 'analytics.example.com', 'database' => 'analytics_db', 'username' => 'reader', 'password' => 'reader_password', 'charset' => 'utf8mb4', ], 'cache' => [ 'type' => 'sqlite', 'database' => '/path/to/cache.db', ], ]; // 创建连接池 $pool = new DatabasePool($config); // 获取数据库连接 $localDb = $pool->getDatabase('local'); $users = $localDb->select('users', '*'); // 获取分析数据库连接 $analyticsDb = $pool->getDatabase('analytics'); $stats = $analyticsDb->select('stats', '*'); // 重新连接 $localDb = $pool->getDatabase('local', true); // 初始化所有连接 $pool->initConnections();
4. FastD 框架集成
<?php use FastD\Container\Container; use FastD\MedooDB\ServiceProvider\DatabaseServiceProvider; // 创建容器 $container = new Container(); // 配置数据库 $container->add('config', [ 'database' => [ 'local' => [ 'type' => 'mysql', 'host' => 'localhost', 'database' => 'app_db', 'username' => 'root', 'password' => 'password', ], ], ]); // 注册服务提供者 $serviceProvider = new DatabaseServiceProvider(); $serviceProvider->register($container); // 使用数据库 $dbPool = $container->get('medoodb'); $database = $dbPool->getDatabase('local'); $users = $database->select('users', '*');
5. 查询构建器示例
<?php use FastD\MedooDB\Database; $database = new Database([ 'type' => 'mysql', 'host' => 'localhost', 'database' => 'test', 'username' => 'root', 'password' => 'password', ]); // WHERE 条件 $users = $database->select('users', '*', [ 'AND' => [ 'status' => 1, 'OR' => [ 'role' => 'admin', 'role' => 'moderator' ] ] ]); // JOIN 查询 $posts = $database->select('posts', [ '[>]users' => ['user_id' => 'id'] ], [ 'posts.id', 'posts.title', 'users.name', 'users.email' ]); // 聚合查询 $count = $database->count('users', '*', [ 'status' => 1 ]); $sum = $database->sum('orders', 'amount', [ 'status' => 'completed' ]); // 原生 SQL $result = $database->query("SELECT * FROM users WHERE status = :status", [ ':status' => 1 ]); // 事务处理 $database->action(function($database) { $database->insert('users', [ 'name' => 'John Doe', 'email' => 'john@example.com' ]); $userId = $database->id(); $database->insert('profiles', [ 'user_id' => $userId, 'bio' => 'Hello World' ]); });
6. 高级配置
<?php use FastD\MedooDB\Database; use PDO; $database = new Database([ 'type' => 'mysql', 'host' => 'localhost', 'database' => 'test', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8mb4', 'port' => 3306, 'prefix' => 'app_', 'option' => [ PDO::ATTR_CASE => PDO::CASE_NATURAL, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, PDO::ATTR_STRINGIFY_FETCHES => false, PDO::ATTR_EMULATE_PREPARES => false, ], 'command' => [ 'SET SQL_MODE=ANSI_QUOTES' ] ]);
📚 API 参考
核心类
FastD\MedooDB\Database- 数据库操作类(继承 Medoo)FastD\MedooDB\DatabasePool- 数据库连接池管理FastD\MedooDB\ServiceProvider\DatabaseServiceProvider- FastD 服务提供者FastD\MedooDB\Listener\BootedEventListener- 启动事件监听器
主要方法
Database 类
继承 Medoo 的所有方法:
select($table, $columns, $where)- 查询数据insert($table, $data)- 插入数据update($table, $data, $where)- 更新数据delete($table, $where)- 删除数据count($table, $where)- 计数query($sql, $map)- 执行原生 SQLaction($callback)- 事务处理reconnect()- 重新连接pdo- 获取 PDO 实例
DatabasePool 类
getDatabase($key, $reconnect)- 获取数据库连接initConnections()- 初始化所有连接onCallback()- 回调事件(用于 Swoole 启动)
🧪 测试
composer install vendor/bin/phpunit
测试使用 SQLite 内存数据库,无需配置真实数据库。
🤝 贡献
欢迎贡献代码、报告问题或提出建议!
- 🐛 报告问题
- 💡 提交功能建议
- 🔧 贡献代码和文档
- ⭐ Star 项目支持
📄 License
MIT License