很高兴宣布 pg_builder 和 pg_wrapper 包已更新,以支持 Postgres 17 语法。
pg_builder 是一个 Postgres 的查询构建器,它基于 PostgreSQL 自身 SQL 解析器的一个部分 PHP 重实现。它支持 Postgres 17 中几乎所有的 SELECT
(和 VALUES
)、INSERT
、UPDATE
、DELETE
和 MERGE
查询语法。
使用 pg_builder,您可以从手动编写的查询开始,将其解析为抽象语法树(AST),然后向该树添加查询部分(可以是 Node 对象或字符串)或移除它们,最后将树转换回 SQL 字符串。
发行亮点
MERGE
语句的改进:支持 RETURNING
子句,支持 WHEN NOT MATCHED BY SOURCE
操作,可以在 WITH
中使用;json()
, json_scalar()
, json_serialize()
, json_exists()
, json_query()
, json_value()
, json_table()
。该软件包可以从 GitHub 下载 或使用 Composer 安装
$ composer require sad_spirit/pg_builder
pg_wrapper 提供了 PostgreSQL 数据类型的转换器,以及一个使用这些转换器的 PHP 原生 pgsql 扩展的面向对象的包装器。查询结果字段的转换是自动完成的,使用了数据库元数据;查询参数可能需要指定类型。
对于存在对应原生 PHP 类型或类的类型,将使用它们(text
-> string
, timestamp
-> DateTimeImmutable
, hstore
-> 关联数组等)。对于其他类型(几何类型、范围类型),该包提供了自定义类。如果基本类型可以转换,那么复合类型、数组和使用这些类型的范围类型也可以处理。
发行亮点
ENUM
类型和 PHP 的字符串枚举之间的转换器;该软件包可以从 GitHub 下载 或使用 composer 安装
$ composer require sad_spirit/pg_wrapper