NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1792 most downloaded on Packagist
Extends Doctrine with native PostgreSQL support for arrays, JSONB, ranges, PostGIS geometries, text search, ltree, uuid, and 100+ PostgreSQL-specific functions.
Last release 10 days ago
28 Sep 2026
Release timing varies
gaps range from 8 days to 2 months
Some releases are documented
notes for 33 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
80 releases · first in 2015
Add PostGIS geometry validation and repair functions through ST_MakeValid and ST_IsValidReason
ST_MakeValid and ST_IsValidReason (#772) (ee07212)geometry_type and srid options to geometry[] and geography[] (#824) (ad8bda5)FILTER clause (#792) (f98c93d)MODE(), PERCENTILE_DISC(), PERCENTILE_CONT()) (#793) (8c0c8fd)ROW_NUMBER, RANK, DENSE_RANK, PERCENT_RANK, CUME_DIST, NTILE) (#799) (e6188f5)LAG, LEAD, FIRST_VALUE, LAST_VALUE, NTH_VALUE) (#800) (e0f978c)OVER (#798) (4209935)WktSpatialData parse under the same-named fromString method like every other value object (#767) (5a95db7)LCA with an array of paths (#850) (d02ccf8)ST_COLLECTIONEXTRACT with only a geometry (#846) (131da97)ST_SCALE with a geometry factor (#847) (d973e71)ST_SUBDIVIDE with only a geometry (#845) (4981c85)TO_TIMESTAMP with a Unix epoch (#848) (77da8cd)WIDTH_BUCKET with an array of thresholds (#849) (8a5542d)lquery and ltxtquery labels (#840) (bd40ec6)ORDER BY (#830) (a9753fa)DATE_EXTRACT field that is not a string literal (#844) (774c638)ND_BOUNDING_BOX_DISTANCE, whose <<#>> operator was never released in a stable PostGIS version (#813) (1be13d3)One column per quarter.
Keep the NULL elements PostgreSQL puts in an integer or float array
Add support for GEN_RANDOM_UUID()
geometry[] and geography[] arrays (#725) (1535593)GEN_RANDOM_UUID() (#679) (1602c2d)geometry_type and srid column options to PostGIS spatial types (#683) (ffa7581)numeric[], varchar[], time[] and json[] data types (#678) (168515b)cube data type (#680) (c9a981f)lquery and ltxtquery data types and the ltree match operators (#681) (2b41e8a)ulid data type via the pgx_ulid extension (#677) (c0d1456)UUIDV7 (#675) (31da3ba)jsonb[] column can hold (#706) (e9b9538)hstore back as an empty map, not null (#704) (87cde8c)bool[] column as null instead of true in PHP (#714) (1bc3e92)\z anchors in validation regexes for data types, for which PostgreSQL doesn't support a trailing newline (#682) (2c2156c)jsonb[] item as a SQL NULL element (#712) (9b7e36e)EMPTY geometries in WktSpatialData (#719) (00d0b36)inet, cidr and ltree validators (and their array counter-parts) to match PostgreSQL (#715) (0c783ee)Widen support of PostGIS functions
Add DQL support for hstore functions
enum DBAL type (#633) (5869318)bytea DBAL type and its array variation (#630) (bc4324e)citext DBAL type and its array variation (#640) (bba3af3)hstore DBAL type and its array variation (#632) (b6f7c12)timetz DBAL type and its array variation (#635) (d80419a)4.5.1 (2026-04-19) Bug Fixes #616 : Add length/dimension support to pgvector types' SQL declaration
Add support for bit and bit varying DBAL types and their array variations
bit and bit varying DBAL types and their array variations (#608) (9f8fed1)box, circle, line, lseg, path, polygon) and their array variations (#601) (5e29747)Add support for AT TIME ZONE operator as a DQL function (enabling timezone conversion of timestamp values)
GENERATE_SERIES through the introduction of GENERATE_NUMERIC_SERIES and GENERATE_TIME_SERIES (#592) (c1b8b44)AT TIME ZONE operator as a DQL function (enabling timezone conversion of timestamp values) (#567) (3ab1d69)date[], timestamp[], and timestamptz[] DBAL types (#597) (989771e)interval[] DBAL type (#591) (7fc59d0)interval DBAL type (#582) (fa71e78)ltree[] DBAL type (#595) (29c28ef)money[] DBAL type (#588) (84e5163)money DBAL type (#577) (95b27a5)range_agg and range_intersect_agg (#573) (c0ca299)tsquery[] DBAL type (#586) (f25d137)tsvector[] DBAL type (#587) (9d45e7d)xml[] DBAL type (#589) (84bfe50)xml DBAL type (#578) (5c9590c)SIMILARITY, STRICT_WORD_SIMILARITYz and WORD_SIMILARITY) (#571) (9715b70)HALFVEC and SPARSEVEC types (#584) (c7d83ae)VECTOR type and distance functions (COSINE_DISTANCE, INNER_PRODUCT, L2_DISTANCE) (#570) (43acc91)datemultirange, tsmultirange, and tstzmultirange DBAL types (#575) (fac1ff6)Add support for int4multirange , int8multirange and nummultirange data types
ST_Buffer, ST_Translate, ST_Scale, ST_Rotate, ST_Subdivide, ST_CurveToLine, ST_Distance, ST_Length, ST_Area, ST_HausdorffDistance, ST_FrechetDistance, ST_Transform) (#549) (c1a6062)int4multirange, int8multirange and nummultirange data types (#555) (8773862)macaddr8 and macaddr8[] data types (#554) (af6678e)tsvector and tsquery data types (#553) (d45bbd8)Add support for ST_GeomFromGeoJSON and ST_AsGeoJSON
fuzzystrmatch extension (#540) (c8073c6)ST_GeomFromGeoJSON and ST_AsGeoJSON (#545) (e7f4df1)Add support for AGE , DATE_PART , MAKE_DATE , MAKE_TIMESTAMP , MAKE_TIMESTAMPTZ , MAKE_TIME
AGE, DATE_PART, MAKE_DATE, MAKE_TIMESTAMP, MAKE_TIMESTAMPTZ, MAKE_TIME (#528) (5e6956a)ARRAY_FILL, ARRAY_LOWER, ARRAY_SAMPLE, ARRAY_UPPER, JSONB_BUILD_ARRAY, JSON_BUILD_ARRAY (#530) (a2091e8)CONCAT_WS, FORMAT, LEFT, REPEAT, REVERSE, RIGHT (#533) (83678f5)JSONB_EXTRACT_PATH, JSON_EXTRACT_PATH, JSONB_EXTRACT_PATH_TEXT, JSON_EXTRACT_PATH_TEXT, JSONB_TO_TSVECTOR, JSONB_TYPEOF (#535) (578e528)remove deprecations scheduled for v4.0
UUID[] data type (#511) (1c9cafb)MD5, SHA224, SHA256, SHA384, SHA512 (#507) (3e42396)ST_ConcaveHull, ST_CurveN, ST_Letters, ST_NumCurves, ST_RemoveIrrelevantPointsForView, ST_RemoveSmallParts, ST_SimplifyPolygonHull, ST_TriangulatePolygon (#505) (2992811)ST_HasZ, ST_HasM, ST_CoverageUnion, ST_LineExtend (#504) (826ffef)null values in the network array data types (#517) (7fb6dc7)Improve accidental misconfiguration through the use of constants for all DBAL types
### Bug Fixes * #482: Always preserve strings (even if they are obviously numerical) when transforming a TEXTARRAY value into a PHP array
### Bug Fixes * #473: Add public getter methods to Range value objects (#477) (9ba319e) * #474: Support usage of arithmetic expressions in mathematica
Add support for uuid_extract_timestamp and uuid_extract_version
WktSpatialData (#459) (7242665)uuid_extract_timestamp and uuid_extract_version (#466) (77a513f)### Bug Fixes * #446: Restore OVERLAPS to its intended namespace and strengthen its test coverage
Add support for websearch_to_tsquery
GEOGRAPHY, GEOMETRY and their array variations (#421) (d97caae)LTREE type (#411) (5a6563d)LTREE data type (#440) (745b269)websearch_to_tsquery (#437) (be90545)TextArray value (#443) (bdb8df2)JsonbArray and preserve integer values as strings if they are outside PHP integer range (#442) (d213967)### Bug Fixes * #399: Support array types for CAST
### Features * #401: Improve JSON field extraction by adding index support
Add support for formatting functions to_char, to_date, to_number, to_timestamp
### Bug Fixes * #351: Correct round-trip handling of special characters between PHP and PostgreSQL
### Bug Fixes * #351: Remove invalid or non-PostgreSQL-compliant test cases; ensure edge cases for backslashes, quotes, special characters, and NULL h
Add support for arithmetic functions ABS, CEIL, FLOOR, ROUND and TRUNC
Extend support of REGEXP_LIKE(), REGEXP_MATCH() and REGEXP_REPLACE() while deprecating the legacy limited flagged variations of FlaggedRegexpLike, Fla…
ARRAY_POSITION() and ARRAY_POSITIONS() (#366) (a1dc059)DATE_ADD(), DATE_SUBTRACT() and DATE_BIN() (#345) (c3cb08d)JSONB_PATH_EXISTS(), JSONB_PATH_MATCH(), JSONB_PATH_QUERY(), JSONB_PATH_QUERY_ARRAY() and JSONB_PATH_QUERY_FIRST() (#346) (0cda902)POINT and POINT[] data types (#348) (18ec906)REGEXP_COUNT(), REGEXP_INSTR() and REGEXP_SUBSTR() and extend support for REGEXP_REPLACE() (#352) (9959476)<@> (#361) (8dbbf8c)REGEXP_LIKE(), REGEXP_MATCH() and REGEXP_REPLACE() while deprecating the legacy limited flagged variations of FlaggedRegexpLike, FlaggedRegexpMatch and FlaggedRegexpReplace (#357) (ef688dc)Avoid infinite parsing loop for GREATEST() and LEAST() by using SimpleArithmeticExpression
Restore support for unquoted string values stored in text[]
_For detailed upgrade guide read here: UPGRADE.md_
For detailed upgrade guide read here: UPGRADE.md
The library now attempts to strictly preserve the type of values when converting between PostgreSQL arrays and PHP arrays. This affects all array type handlers including TextArray, integer arrays, and boolean arrays.
What changed: Previously, numeric values could lose their type information during conversion (e.g., floats might become integers, string representations of numbers might become actual numbers). With version 3.0.0, the original data types are preserved in both directions. The change comes from PR #304.
Examples:
1 remain integers1.5 remain floats'1' remain stringstrue/false remain booleans'1.23e5' is preservedThe exception handling for JsonbArray has been refactored to be more consistent with the network types approach, providing clearer error messages and better diagnostics.
What changed: Previously, generic exceptions were thrown when JSON array conversion failed. With version 3.0.0, specific InvalidJsonbArrayItemForPHPException is used with more descriptive error messages about the exact nature of the failure. The change comes from PR #311.
real[] and double precision[] (#307) (1db35ac)inet, inet[], cidr, cidr[], macaddr, macaddr[] (#310) (ba3f9f2)any_value() (#323) (19ee3db)array_shuffle() (#324) (90a9b9e)xmlagg() (#318) (0b4db8a)NULL value in array_append(), array_replace(), array_prepend(), array_remove() (#322) (396856f)DISTINCT and ORDER BY clauses to json_agg() and jsonb_agg() (#317) (4cdc638)DISTINCT clause to array_agg() (#316) (3c46021)Add support for Lexer v1 (allowed by ORM < v2.15)
Improve BC by deprecating customiseFunction instead of renaming it straight away
Wrap up ORM v3 throwable when parsing fails in variadic functions
Add (limited) support for json_exists, json_query, json_scalar, json_serialize and json_value
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →