我很高兴宣布发布 pg_builder 和 pg_wrapper 包的新版本。这些版本的主要主题是支持 Postgres 14 和 PHP 8.1
pg_builder 是一个用于 Postgres 的查询构建器,由 PostgreSQL 自己的 SQL 解析器的部分 PHP 重新实现提供支持。它支持 Postgres 14 中几乎所有可用于 SELECT
(和 VALUES
)、INSERT
、UPDATE
和 DELETE
查询的语法。
使用 pg_builder,可以从手动编写的查询开始,将其解析为抽象语法树,将查询部分(作为 Node
对象或字符串)添加到此树或从中删除它们,最后将树转换回 SQL 字符串。
版本亮点
AS
;用于 GROUP BY
的 DISTINCT
子句;用于公共表表达式的 SEARCH
和 CYCLE
子句;JOIN
表达式的 USING
子句的别名。Node
,并且在生成的 SQL 中将以与源中相同的方式显示:trim(trailing 'o' from 'foo')
而不是 pg_catalog.rtrim('foo', 'o')
。这遵循了 Postgres 14 本身所做的更改。E_DEPRECATED
错误该软件包可以从 Github 下载 或通过 Composer 安装
$ composer require sad_spirit/pg_builder
pg_builder 可以单独使用,将其与 pg_wrapper 一起使用可以运行构建的查询,并透明地将查询参数转换为 Postgres 类型。
pg_wrapper 为 PostgreSQL 数据类型提供转换器,以及一个围绕 PHP 原生 pgsql 扩展的 OO 包装器,该包装器使用这些转换器。查询结果字段的转换使用数据库元数据自动完成,查询参数可能需要指定类型。
对于那些有相应的原生 PHP 类型或类的类型(text -> string,timestamp -> DateTimeImmutable,hstore -> 关联数组等)使用它。对于其他类型(几何类型、范围),该软件包提供自定义类。
版本亮点
types\Multirange
及其后代在 PHP 端表示值,并使用 converters\containers\MultiRangeConverter
将值转换为 DB 字符串表示形式或从中转换。该软件包可以从 Github 下载 或通过 Composer 安装
$ composer require sad_spirit/pg_wrapper