很高興宣佈 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