我很高兴地宣布,pg_builder 和 pg_wrapper PHP 包已更新以支持 Postgres 16 语法,同时 pg_gateway 也首次发布。
pg_builder 是一个用于 Postgres 的查询构建器,其底层是 PostgreSQL 自身 SQL 解析器的部分 PHP 重实现。它支持 Postgres 16 中几乎所有可用于 SELECT
(和 VALUES
)、INSERT
、UPDATE
、DELETE
和 MERGE
查询的语法。
通过 pg_builder,可以从手动编写的查询开始,将其解析为抽象语法树,向该树添加查询部分(作为 Node
对象或字符串),或从中删除查询部分,最后将该树转换回 SQL 字符串。
新版本增加了对 PostgreSQL 16 中新增功能的支持
IS JSON
谓词,聚合函数 json_arrayagg()
和 json_objectagg()
,构造函数 json_array()
和 json_object()
。FROM
中子查询的可选别名,新增 SYSTEM_USER
服务器变量,XMLSERIALIZE()
表达式的 [NO] INDENT
选项。该软件包可以从 Github 下载或通过 Composer 安装
$ composer require sad_spirit/pg_builder
pg_wrapper 提供了 PostgreSQL 数据类型的转换器,以及一个围绕 PHP 原生 pgsql 扩展的 OO 包装器,该包装器使用这些转换器。查询结果字段的转换是使用数据库元数据自动完成的,查询参数可能需要指定类型。
对于有相应的原生 PHP 类型或类可用的类型(文本 -> 字符串,时间戳 -> DateTimeImmutable,hstore -> 关联数组等),则使用该类型或类。对于其他类型(几何类型,范围),该软件包提供了自定义类。
新版本增加了对 PostgreSQL 16 中新增功能的支持
该软件包可以从 Github 下载或通过 Composer 安装
$ composer require sad_spirit/pg_wrapper
这是一个基于 pg_wrapper 和 pg_builder 包构建的 表数据网关 实现。它添加了以下功能
与往常一样,该软件包可以从 Github 下载或通过 Composer 安装
$ composer require sad_spirit/pg_gateway