我很高兴地宣布 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,可以从手动编写的查询开始,将其解析成抽象语法树(Abstract Syntax Tree),然后向该树添加查询部分(可以是 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 扩展的面向对象的封装,该封装使用了这些转换器。查询结果字段的转换是自动完成的,利用数据库元数据;查询参数可能需要指定类型。
对于有对应原生 PHP 类型或类的类型,将使用它们(text -> string,timestamp -> DateTimeImmutable,hstore -> 关联数组等)。对于其他类型(几何类型、范围类型),该包提供了自定义类。
新版本增加了对 PostgreSQL 16 中新增功能的支持
该包可以从 Github 下载 或使用 Composer 安装。
$ composer require sad_spirit/pg_wrapper
这是基于 pg_wrapper 和 pg_builder 包构建的 Table Data Gateway 实现。它增加了以下功能:
像往常一样,该包可以从 Github 下载 或使用 Composer 安装。
$ composer require sad_spirit/pg_gateway