很高兴宣布 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