fiberphp/database-pgsql

🐘 FiberPHP PostgreSQL 驱动 —— DSN 解析、时区配置、Schema 查询、断线检测。

Maintainers

Package info

gitee.com/FiberPHP/database-pgsql

Issues

pkg:composer/fiberphp/database-pgsql

Transparency log

Statistics

Installs: 0

Dependents: 1

Suggesters: 0

dev-master 2026-08-23 06:14 UTC

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 SETEXCLUDED.col),并通过 pg_attribute 系统视图查询字段元数据。

环境要求

  • PHP >= 8.3
  • ext-pdo
  • ext-pdo_pgsql
  • PostgreSQL >= 10
  • fiberphp/database dev-master

安装

composer require fiberphp/database-pgsql

安装后框架通过 #[Package] 属性自动发现 Provider,在 register() 阶段调用 Db::registerDriver('pgsql', Driver::class) 完成注册。无需手动配置。

方言实现

方法PostgreSQL 实现
quoteIdentifier"name" 双引号引用(SQL 标准)
getColumnsSql查询 pg_attribute 系统视图
getTablesSqlSELECT tablename FROM pg_tables WHERE schemaname='...'
normalizeColumns解析 pg_attribute 查询结果
randomFunctionrandom()(SQL 标准)
buildUpsertPrefixON CONFLICT (target) DO UPDATE SET
quoteExcludedColumnEXCLUDED.col

与 SQLite 驱动共用 SqlStandardDialect trait(位于核心包 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