我很高興宣布 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 wrapper,它使用這些轉換器。 查詢結果欄位的轉換使用資料庫元資料自動完成,查詢參數可能需要指定類型。
對於那些提供相應原生 PHP 類型或類別的類型,將使用它(text -> string,timestamp -> DateTimeImmutable,hstore -> 關聯陣列等)。 對於其他類型(幾何類型、範圍),該套件提供自定義類別。
版本重點
types\Multirange
及其後代來表示 PHP 端的數值,並使用 converters\containers\MultiRangeConverter
將數值轉換為 DB 字串表示形式以及從 DB 字串表示形式轉換。該套件可以從 Github 下載 或使用 Composer 安裝
$ composer require sad_spirit/pg_wrapper