fiberphp / database-pgsql
🐘 FiberPHP PostgreSQL 驱动 —— DSN 解析、时区配置、Schema 查询、断线检测。
dev-master
2026-08-23 06:14 UTC
Requires
- php: >=8.3
- ext-pdo: *
- ext-pdo_pgsql: *
- fiberphp/database: dev-master
This package is auto-updated.
Last update: 2026-08-23 06:15:19 UTC
README
FiberPHP 框架的 PostgreSQL 数据库驱动包。提供 PostgreSQL DSN 拼接、会话时区设置(SET TIME ZONE)、断线检测、SQL 标准方言(双引号引用、random()、ON CONFLICT DO UPDATE SET、EXCLUDED.col),并通过 pg_attribute 系统视图查询字段元数据。
环境要求
- PHP >= 8.3
ext-pdoext-pdo_pgsql- PostgreSQL >= 10
fiberphp/databasedev-master
安装
composer require fiberphp/database-pgsql
安装后框架通过 #[Package] 属性自动发现 Provider,在 register() 阶段调用 Db::registerDriver('pgsql', Driver::class) 完成注册。无需手动配置。
方言实现
| 方法 | PostgreSQL 实现 |
|---|---|
quoteIdentifier | "name" 双引号引用(SQL 标准) |
getColumnsSql | 查询 pg_attribute 系统视图 |
getTablesSql | SELECT tablename FROM pg_tables WHERE schemaname='...' |
normalizeColumns | 解析 pg_attribute 查询结果 |
randomFunction | random()(SQL 标准) |
buildUpsertPrefix | ON CONFLICT (target) DO UPDATE SET |
quoteExcludedColumn | EXCLUDED.col |
与 SQLite 驱动共用
SqlStandardDialecttrait(位于核心包FiberPHP\Database\Driver)。
时区设置
// config/database.php
'pgsql' => [
'driver' => 'pgsql',
'host' => '127.0.0.1',
'port' => 5432,
'database' => 'demo',
'username' => 'postgres',
'password' => '',
'timezone' => 'Asia/Shanghai', // SET TIME ZONE 'Asia/Shanghai'
],
PostgreSQL 时区语法为
SET TIME ZONE '...'(无=号),与 MySQL 的SET time_zone = '...'不同。
详细用法见 fiberphp/database。