我很高興宣布 pg_builder 和 pg_wrapper 套件的首個穩定版本。
現在這兩個套件都需要 PHP 7.2+,已在 PHP 8 上進行測試和支援,並且通過 phpstan 和 psalm 工具的靜態程式碼分析。
pg_builder 是一個針對 Postgres 的查詢建構器,由 PostgreSQL 自身 SQL 解析器的部分 PHP 重新實作提供支援。它支援 Postgres 13 中幾乎所有可用的 SELECT
(和 VALUES
)、INSERT
、UPDATE
和 DELETE
查詢語法。
使用 pg_builder,可以從手動編寫的查詢開始,將其解析為抽象語法樹,將查詢部分(作為 Node 物件或字串)新增到此樹或將其刪除,最後將該樹轉換回 SQL 字串。
版本重點
FROM
子句中類函數結構的解析。該套件可以從 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 -> 關聯陣列等等)。對於其他類型(幾何類型、範圍),該套件提供了自訂類別。
版本重點
Connection::atomic()
方法,它接受一個可呼叫物件並以原子方式執行它。 atomic()
呼叫可以巢狀,並且可以設定在最終 COMMIT
或 ROLLBACK
之後執行的回呼。SQLSTATE
錯誤代碼在資料庫錯誤時拋出的特殊異常子類別。該套件可以從 Github 下載 或使用 Composer 安裝
$ composer require sad_spirit/pg_wrapper