
Integration with Symfony
This guide covers integration with Symfony 6.4+ and 7.x using the DoctrineBundle.
Register DBAL Types
Register the DBAL types you plan to use. The full set of available types can be found in AVAILABLE-TYPES.md.
# config/packages/doctrine.yaml
doctrine:
dbal:
types:
# Binary types
bytea: MartinGeorgiev\Doctrine\DBAL\Types\Bytea
'bytea[]': MartinGeorgiev\Doctrine\DBAL\Types\ByteaArray
# Bit types
bit: MartinGeorgiev\Doctrine\DBAL\Types\Bit
'bit[]': MartinGeorgiev\Doctrine\DBAL\Types\BitArray
'bit varying': MartinGeorgiev\Doctrine\DBAL\Types\BitVarying
'bit varying[]': MartinGeorgiev\Doctrine\DBAL\Types\BitVaryingArray
# Array types
'bool[]': MartinGeorgiev\Doctrine\DBAL\Types\BooleanArray
'smallint[]': MartinGeorgiev\Doctrine\DBAL\Types\SmallIntArray
'integer[]': MartinGeorgiev\Doctrine\DBAL\Types\IntegerArray
'bigint[]': MartinGeorgiev\Doctrine\DBAL\Types\BigIntArray
'double precision[]': MartinGeorgiev\Doctrine\DBAL\Types\DoublePrecisionArray
'numeric[]': MartinGeorgiev\Doctrine\DBAL\Types\NumericArray
'real[]': MartinGeorgiev\Doctrine\DBAL\Types\RealArray
'text[]': MartinGeorgiev\Doctrine\DBAL\Types\TextArray
'uuid[]': MartinGeorgiev\Doctrine\DBAL\Types\UuidArray
'varchar[]': MartinGeorgiev\Doctrine\DBAL\Types\VarcharArray
# Date and time types
'date[]': MartinGeorgiev\Doctrine\DBAL\Types\DateArray
interval: MartinGeorgiev\Doctrine\DBAL\Types\Interval
'interval[]': MartinGeorgiev\Doctrine\DBAL\Types\IntervalArray
'time[]': MartinGeorgiev\Doctrine\DBAL\Types\TimeArray
'timestamp[]': MartinGeorgiev\Doctrine\DBAL\Types\TimestampArray
'timestamptz[]': MartinGeorgiev\Doctrine\DBAL\Types\TimestampTzArray
timetz: MartinGeorgiev\Doctrine\DBAL\Types\Timetz
'timetz[]': MartinGeorgiev\Doctrine\DBAL\Types\TimetzArray
# JSON types
'json[]': MartinGeorgiev\Doctrine\DBAL\Types\JsonArray
jsonb: MartinGeorgiev\Doctrine\DBAL\Types\Jsonb
'jsonb[]': MartinGeorgiev\Doctrine\DBAL\Types\JsonbArray
# Network types
cidr: MartinGeorgiev\Doctrine\DBAL\Types\Cidr
'cidr[]': MartinGeorgiev\Doctrine\DBAL\Types\CidrArray
inet: MartinGeorgiev\Doctrine\DBAL\Types\Inet
'inet[]': MartinGeorgiev\Doctrine\DBAL\Types\InetArray
macaddr: MartinGeorgiev\Doctrine\DBAL\Types\Macaddr
'macaddr[]': MartinGeorgiev\Doctrine\DBAL\Types\MacaddrArray
macaddr8: MartinGeorgiev\Doctrine\DBAL\Types\Macaddr8
'macaddr8[]': MartinGeorgiev\Doctrine\DBAL\Types\Macaddr8Array
# Geometric types
box: MartinGeorgiev\Doctrine\DBAL\Types\Box
'box[]': MartinGeorgiev\Doctrine\DBAL\Types\BoxArray
circle: MartinGeorgiev\Doctrine\DBAL\Types\Circle
'circle[]': MartinGeorgiev\Doctrine\DBAL\Types\CircleArray
line: MartinGeorgiev\Doctrine\DBAL\Types\Line
'line[]': MartinGeorgiev\Doctrine\DBAL\Types\LineArray
lseg: MartinGeorgiev\Doctrine\DBAL\Types\Lseg
'lseg[]': MartinGeorgiev\Doctrine\DBAL\Types\LsegArray
path: MartinGeorgiev\Doctrine\DBAL\Types\Path
'path[]': MartinGeorgiev\Doctrine\DBAL\Types\PathArray
point: MartinGeorgiev\Doctrine\DBAL\Types\Point
'point[]': MartinGeorgiev\Doctrine\DBAL\Types\PointArray
polygon: MartinGeorgiev\Doctrine\DBAL\Types\Polygon
'polygon[]': MartinGeorgiev\Doctrine\DBAL\Types\PolygonArray
# Cube types
cube: MartinGeorgiev\Doctrine\DBAL\Types\Cube
'cube[]': MartinGeorgiev\Doctrine\DBAL\Types\CubeArray
# PostGIS spatial types
geometry: MartinGeorgiev\Doctrine\DBAL\Types\Geometry
'geometry[]': MartinGeorgiev\Doctrine\DBAL\Types\GeometryArray
geography: MartinGeorgiev\Doctrine\DBAL\Types\Geography
'geography[]': MartinGeorgiev\Doctrine\DBAL\Types\GeographyArray
# Range types
daterange: MartinGeorgiev\Doctrine\DBAL\Types\DateRange
'daterange[]': MartinGeorgiev\Doctrine\DBAL\Types\DateRangeArray
int4range: MartinGeorgiev\Doctrine\DBAL\Types\Int4Range
'int4range[]': MartinGeorgiev\Doctrine\DBAL\Types\Int4RangeArray
int8range: MartinGeorgiev\Doctrine\DBAL\Types\Int8Range
'int8range[]': MartinGeorgiev\Doctrine\DBAL\Types\Int8RangeArray
numrange: MartinGeorgiev\Doctrine\DBAL\Types\NumRange
'numrange[]': MartinGeorgiev\Doctrine\DBAL\Types\NumRangeArray
tsrange: MartinGeorgiev\Doctrine\DBAL\Types\TsRange
'tsrange[]': MartinGeorgiev\Doctrine\DBAL\Types\TsRangeArray
tstzrange: MartinGeorgiev\Doctrine\DBAL\Types\TstzRange
'tstzrange[]': MartinGeorgiev\Doctrine\DBAL\Types\TstzRangeArray
# Multirange types
datemultirange: MartinGeorgiev\Doctrine\DBAL\Types\DateMultirange
'datemultirange[]': MartinGeorgiev\Doctrine\DBAL\Types\DateMultirangeArray
int4multirange: MartinGeorgiev\Doctrine\DBAL\Types\Int4Multirange
'int4multirange[]': MartinGeorgiev\Doctrine\DBAL\Types\Int4MultirangeArray
int8multirange: MartinGeorgiev\Doctrine\DBAL\Types\Int8Multirange
'int8multirange[]': MartinGeorgiev\Doctrine\DBAL\Types\Int8MultirangeArray
nummultirange: MartinGeorgiev\Doctrine\DBAL\Types\NumMultirange
'nummultirange[]': MartinGeorgiev\Doctrine\DBAL\Types\NumMultirangeArray
tsmultirange: MartinGeorgiev\Doctrine\DBAL\Types\TsMultirange
'tsmultirange[]': MartinGeorgiev\Doctrine\DBAL\Types\TsMultirangeArray
tstzmultirange: MartinGeorgiev\Doctrine\DBAL\Types\TstzMultirange
'tstzmultirange[]': MartinGeorgiev\Doctrine\DBAL\Types\TstzMultirangeArray
# Case-insensitive text types
citext: MartinGeorgiev\Doctrine\DBAL\Types\Citext
'citext[]': MartinGeorgiev\Doctrine\DBAL\Types\CitextArray
# ULID types
ulid: MartinGeorgiev\Doctrine\DBAL\Types\Ulid
'ulid[]': MartinGeorgiev\Doctrine\DBAL\Types\UlidArray
# Text search types
tsquery: MartinGeorgiev\Doctrine\DBAL\Types\Tsquery
'tsquery[]': MartinGeorgiev\Doctrine\DBAL\Types\TsqueryArray
tsvector: MartinGeorgiev\Doctrine\DBAL\Types\Tsvector
'tsvector[]': MartinGeorgiev\Doctrine\DBAL\Types\TsvectorArray
# Monetary types
money: MartinGeorgiev\Doctrine\DBAL\Types\Money
'money[]': MartinGeorgiev\Doctrine\DBAL\Types\MoneyArray
# Key-value types
hstore: MartinGeorgiev\Doctrine\DBAL\Types\Hstore
'hstore[]': MartinGeorgiev\Doctrine\DBAL\Types\HstoreArray
# Hierarchical types
lquery: MartinGeorgiev\Doctrine\DBAL\Types\Lquery
'lquery[]': MartinGeorgiev\Doctrine\DBAL\Types\LqueryArray
ltree: MartinGeorgiev\Doctrine\DBAL\Types\Ltree
'ltree[]': MartinGeorgiev\Doctrine\DBAL\Types\LtreeArray
ltxtquery: MartinGeorgiev\Doctrine\DBAL\Types\Ltxtquery
'ltxtquery[]': MartinGeorgiev\Doctrine\DBAL\Types\LtxtqueryArray
# XML types
xml: MartinGeorgiev\Doctrine\DBAL\Types\Xml
'xml[]': MartinGeorgiev\Doctrine\DBAL\Types\XmlArray
# Vector types
halfvec: MartinGeorgiev\Doctrine\DBAL\Types\Halfvec
sparsevec: MartinGeorgiev\Doctrine\DBAL\Types\Sparsevec
vector: MartinGeorgiev\Doctrine\DBAL\Types\Vector
User-defined enum types: For each PostgreSQL native
ENUMtype, create a concrete class extendingMartinGeorgiev\Doctrine\DBAL\Types\Enumand register it like the examples above. Columns holding an array of that enum get a second concrete class extendingMartinGeorgiev\Doctrine\DBAL\Types\EnumArray, registered alongside the scalar one:doctrine: dbal: types: status: App\Doctrine\Type\StatusType status[]: App\Doctrine\Type\StatusArrayTypeSee ENUM-TYPE.md for a full example.
User-defined composite types: For each PostgreSQL composite (row) type, create a concrete class extending
MartinGeorgiev\Doctrine\DBAL\Types\Compositeand register it like the examples above. Columns holding an array of that composite get a second concrete class extendingMartinGeorgiev\Doctrine\DBAL\Types\CompositeArray, registered alongside the scalar one:doctrine: dbal: types: inventory_item: App\Doctrine\Type\InventoryItemType inventory_item[]: App\Doctrine\Type\InventoryItemArrayTypeSee COMPOSITE-TYPE.md for a full example.
Configure Type Mappings
Add mapping between DBAL and PostgreSQL data types. PostgreSQL normally prefixes array data-types with _. Note the PostgreSQL-specific naming for integers (int2, int4, int8).
# config/packages/doctrine.yaml
doctrine:
dbal:
connections:
default:
mapping_types:
# Binary type mappings
bytea: !php/const MartinGeorgiev\Doctrine\DBAL\Type::BYTEA
'bytea[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::BYTEA_ARRAY
_bytea: !php/const MartinGeorgiev\Doctrine\DBAL\Type::BYTEA_ARRAY
# Bit type mappings
bit: !php/const MartinGeorgiev\Doctrine\DBAL\Type::BIT
'bit[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::BIT_ARRAY
_bit: !php/const MartinGeorgiev\Doctrine\DBAL\Type::BIT_ARRAY
'bit varying': !php/const MartinGeorgiev\Doctrine\DBAL\Type::BIT_VARYING
varbit: !php/const MartinGeorgiev\Doctrine\DBAL\Type::BIT_VARYING
'bit varying[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::BIT_VARYING_ARRAY
_varbit: !php/const MartinGeorgiev\Doctrine\DBAL\Type::BIT_VARYING_ARRAY
# Array type mappings
'bool[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::BOOL_ARRAY
_bool: !php/const MartinGeorgiev\Doctrine\DBAL\Type::BOOL_ARRAY
'smallint[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::SMALLINT_ARRAY
_int2: !php/const MartinGeorgiev\Doctrine\DBAL\Type::SMALLINT_ARRAY
'integer[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::INTEGER_ARRAY
_int4: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INTEGER_ARRAY
'bigint[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::BIGINT_ARRAY
_int8: !php/const MartinGeorgiev\Doctrine\DBAL\Type::BIGINT_ARRAY
'double precision[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::DOUBLE_PRECISION_ARRAY
_float8: !php/const MartinGeorgiev\Doctrine\DBAL\Type::DOUBLE_PRECISION_ARRAY
'numeric[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::NUMERIC_ARRAY
_numeric: !php/const MartinGeorgiev\Doctrine\DBAL\Type::NUMERIC_ARRAY
'real[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::REAL_ARRAY
_float4: !php/const MartinGeorgiev\Doctrine\DBAL\Type::REAL_ARRAY
'text[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::TEXT_ARRAY
_text: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TEXT_ARRAY
'uuid[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::UUID_ARRAY
_uuid: !php/const MartinGeorgiev\Doctrine\DBAL\Type::UUID_ARRAY
'varchar[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::VARCHAR_ARRAY
_varchar: !php/const MartinGeorgiev\Doctrine\DBAL\Type::VARCHAR_ARRAY
# Case-insensitive text type mappings
citext: !php/const MartinGeorgiev\Doctrine\DBAL\Type::CITEXT
'citext[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::CITEXT_ARRAY
_citext: !php/const MartinGeorgiev\Doctrine\DBAL\Type::CITEXT_ARRAY
# ULID type mappings
ulid: !php/const MartinGeorgiev\Doctrine\DBAL\Type::ULID
'ulid[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::ULID_ARRAY
_ulid: !php/const MartinGeorgiev\Doctrine\DBAL\Type::ULID_ARRAY
# Datetime array type mappings
'date[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::DATE_ARRAY
_date: !php/const MartinGeorgiev\Doctrine\DBAL\Type::DATE_ARRAY
interval: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INTERVAL
'interval[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::INTERVAL_ARRAY
_interval: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INTERVAL_ARRAY
'time[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::TIME_ARRAY
_time: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TIME_ARRAY
'timestamp[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::TIMESTAMP_ARRAY
_timestamp: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TIMESTAMP_ARRAY
'timestamptz[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::TIMESTAMPTZ_ARRAY
_timestamptz: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TIMESTAMPTZ_ARRAY
timetz: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TIMETZ
'timetz[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::TIMETZ_ARRAY
_timetz: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TIMETZ_ARRAY
# JSON type mappings
'json[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::JSON_ARRAY
_json: !php/const MartinGeorgiev\Doctrine\DBAL\Type::JSON_ARRAY
jsonb: !php/const MartinGeorgiev\Doctrine\DBAL\Type::JSONB
'jsonb[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::JSONB_ARRAY
_jsonb: !php/const MartinGeorgiev\Doctrine\DBAL\Type::JSONB_ARRAY
# Network type mappings
cidr: !php/const MartinGeorgiev\Doctrine\DBAL\Type::CIDR
'cidr[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::CIDR_ARRAY
_cidr: !php/const MartinGeorgiev\Doctrine\DBAL\Type::CIDR_ARRAY
inet: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INET
'inet[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::INET_ARRAY
_inet: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INET_ARRAY
macaddr: !php/const MartinGeorgiev\Doctrine\DBAL\Type::MACADDR
'macaddr[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::MACADDR_ARRAY
_macaddr: !php/const MartinGeorgiev\Doctrine\DBAL\Type::MACADDR_ARRAY
macaddr8: !php/const MartinGeorgiev\Doctrine\DBAL\Type::MACADDR8
'macaddr8[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::MACADDR8_ARRAY
_macaddr8: !php/const MartinGeorgiev\Doctrine\DBAL\Type::MACADDR8_ARRAY
# Geometric type mappings
box: !php/const MartinGeorgiev\Doctrine\DBAL\Type::BOX
'box[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::BOX_ARRAY
_box: !php/const MartinGeorgiev\Doctrine\DBAL\Type::BOX_ARRAY
circle: !php/const MartinGeorgiev\Doctrine\DBAL\Type::CIRCLE
'circle[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::CIRCLE_ARRAY
_circle: !php/const MartinGeorgiev\Doctrine\DBAL\Type::CIRCLE_ARRAY
line: !php/const MartinGeorgiev\Doctrine\DBAL\Type::LINE
'line[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::LINE_ARRAY
_line: !php/const MartinGeorgiev\Doctrine\DBAL\Type::LINE_ARRAY
lseg: !php/const MartinGeorgiev\Doctrine\DBAL\Type::LSEG
'lseg[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::LSEG_ARRAY
_lseg: !php/const MartinGeorgiev\Doctrine\DBAL\Type::LSEG_ARRAY
path: !php/const MartinGeorgiev\Doctrine\DBAL\Type::PATH
'path[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::PATH_ARRAY
_path: !php/const MartinGeorgiev\Doctrine\DBAL\Type::PATH_ARRAY
point: !php/const MartinGeorgiev\Doctrine\DBAL\Type::POINT
'point[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::POINT_ARRAY
_point: !php/const MartinGeorgiev\Doctrine\DBAL\Type::POINT_ARRAY
polygon: !php/const MartinGeorgiev\Doctrine\DBAL\Type::POLYGON
'polygon[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::POLYGON_ARRAY
_polygon: !php/const MartinGeorgiev\Doctrine\DBAL\Type::POLYGON_ARRAY
# Cube type mappings
cube: !php/const MartinGeorgiev\Doctrine\DBAL\Type::CUBE
'cube[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::CUBE_ARRAY
_cube: !php/const MartinGeorgiev\Doctrine\DBAL\Type::CUBE_ARRAY
# PostGIS spatial type mappings
geometry: !php/const MartinGeorgiev\Doctrine\DBAL\Type::GEOMETRY
'geometry[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::GEOMETRY_ARRAY
_geometry: !php/const MartinGeorgiev\Doctrine\DBAL\Type::GEOMETRY_ARRAY
geography: !php/const MartinGeorgiev\Doctrine\DBAL\Type::GEOGRAPHY
'geography[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::GEOGRAPHY_ARRAY
_geography: !php/const MartinGeorgiev\Doctrine\DBAL\Type::GEOGRAPHY_ARRAY
# Range type mappings
daterange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::DATERANGE
'daterange[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::DATERANGE_ARRAY
_daterange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::DATERANGE_ARRAY
int4range: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT4RANGE
'int4range[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT4RANGE_ARRAY
_int4range: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT4RANGE_ARRAY
int8range: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT8RANGE
'int8range[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT8RANGE_ARRAY
_int8range: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT8RANGE_ARRAY
numrange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::NUMRANGE
'numrange[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::NUMRANGE_ARRAY
_numrange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::NUMRANGE_ARRAY
tsrange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSRANGE
'tsrange[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSRANGE_ARRAY
_tsrange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSRANGE_ARRAY
tstzrange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSTZRANGE
'tstzrange[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSTZRANGE_ARRAY
_tstzrange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSTZRANGE_ARRAY
# Multirange type mappings
datemultirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::DATEMULTIRANGE
_datemultirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::DATEMULTIRANGE_ARRAY
'datemultirange[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::DATEMULTIRANGE_ARRAY
int4multirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT4MULTIRANGE
'int4multirange[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT4MULTIRANGE_ARRAY
_int4multirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT4MULTIRANGE_ARRAY
int8multirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT8MULTIRANGE
'int8multirange[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT8MULTIRANGE_ARRAY
_int8multirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::INT8MULTIRANGE_ARRAY
nummultirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::NUMMULTIRANGE
'nummultirange[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::NUMMULTIRANGE_ARRAY
_nummultirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::NUMMULTIRANGE_ARRAY
tsmultirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSMULTIRANGE
'tsmultirange[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSMULTIRANGE_ARRAY
_tsmultirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSMULTIRANGE_ARRAY
tstzmultirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSTZMULTIRANGE
'tstzmultirange[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSTZMULTIRANGE_ARRAY
_tstzmultirange: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSTZMULTIRANGE_ARRAY
# Text search type mappings
tsquery: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSQUERY
'tsquery[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSQUERY_ARRAY
_tsquery: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSQUERY_ARRAY
tsvector: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSVECTOR
'tsvector[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSVECTOR_ARRAY
_tsvector: !php/const MartinGeorgiev\Doctrine\DBAL\Type::TSVECTOR_ARRAY
# Monetary type mappings
money: !php/const MartinGeorgiev\Doctrine\DBAL\Type::MONEY
'money[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::MONEY_ARRAY
_money: !php/const MartinGeorgiev\Doctrine\DBAL\Type::MONEY_ARRAY
# Key-value type mappings
hstore: !php/const MartinGeorgiev\Doctrine\DBAL\Type::HSTORE
'hstore[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::HSTORE_ARRAY
_hstore: !php/const MartinGeorgiev\Doctrine\DBAL\Type::HSTORE_ARRAY
# Hierarchical type mappings
lquery: !php/const MartinGeorgiev\Doctrine\DBAL\Type::LQUERY
'lquery[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::LQUERY_ARRAY
_lquery: !php/const MartinGeorgiev\Doctrine\DBAL\Type::LQUERY_ARRAY
ltree: !php/const MartinGeorgiev\Doctrine\DBAL\Type::LTREE
'ltree[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::LTREE_ARRAY
_ltree: !php/const MartinGeorgiev\Doctrine\DBAL\Type::LTREE_ARRAY
ltxtquery: !php/const MartinGeorgiev\Doctrine\DBAL\Type::LTXTQUERY
'ltxtquery[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::LTXTQUERY_ARRAY
_ltxtquery: !php/const MartinGeorgiev\Doctrine\DBAL\Type::LTXTQUERY_ARRAY
# XML type mappings
xml: !php/const MartinGeorgiev\Doctrine\DBAL\Type::XML
'xml[]': !php/const MartinGeorgiev\Doctrine\DBAL\Type::XML_ARRAY
_xml: !php/const MartinGeorgiev\Doctrine\DBAL\Type::XML_ARRAY
# Vector type mappings
halfvec: !php/const MartinGeorgiev\Doctrine\DBAL\Type::HALFVEC
sparsevec: !php/const MartinGeorgiev\Doctrine\DBAL\Type::SPARSEVEC
vector: !php/const MartinGeorgiev\Doctrine\DBAL\Type::VECTOR
Register DQL Functions
Register the functions you’ll use in your DQL queries. The full set of available functions and operators can be found in the Available Functions and Operators documentation and its specialized sub-pages:
- Array and JSON Functions
- PostGIS Spatial Functions
- Text and Pattern Functions
- Date and Range Functions
- Mathematical Functions
- Utility Functions
# config/packages/doctrine.yaml
doctrine:
orm:
entity_managers:
your_connection:
dql:
string_functions:
# alternative implementation of ALL() and ANY() where subquery is not required, useful for arrays
ALL_OF: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\All
ANY_OF: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Any
# operators for working with array and json(b) data
GREATEST: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Greatest
LEAST: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Least
CONTAINS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Contains # @>
IS_CONTAINED_BY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\IsContainedBy # <@
OVERLAPS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Overlaps # &&
RIGHT_EXISTS_ON_LEFT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TheRightExistsOnTheLeft # ?
ALL_ON_RIGHT_EXIST_ON_LEFT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\AllOnTheRightExistOnTheLeft # ?&
ANY_ON_RIGHT_EXISTS_ON_LEFT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\AnyOnTheRightExistsOnTheLeft # ?|
RETURNS_VALUE_FOR_JSON_VALUE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ReturnsValueForJsonValue # @?
DELETE_AT_PATH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\DeleteAtPath # #-
# array and string specific functions
IN_ARRAY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\InArray
ANY_VALUE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\AnyValue
ARRAY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Arr
ARRAY_APPEND: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayAppend
ARRAY_CARDINALITY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayCardinality
ARRAY_CAT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayCat
ARRAY_DIMENSIONS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayDimensions
ARRAY_FILL: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayFill
ARRAY_LENGTH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayLength
ARRAY_LOWER: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayLower
ARRAY_NUMBER_OF_DIMENSIONS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayNumberOfDimensions
ARRAY_POSITION: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayPosition
ARRAY_POSITIONS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayPositions
ARRAY_PREPEND: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayPrepend
ARRAY_REMOVE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayRemove
ARRAY_REPLACE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayReplace
ARRAY_REVERSE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayReverse
ARRAY_SAMPLE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArraySample
ARRAY_SHUFFLE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayShuffle
ARRAY_SORT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArraySort
ARRAY_TO_JSON: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayToJson
ARRAY_TO_STRING: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayToString
ARRAY_UPPER: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayUpper
ASCII: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ascii
BTRIM: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Btrim
CASEFOLD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Casefold
CHAR_LENGTH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\CharLength
CHR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Chr
CONCAT_WS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ConcatWs
DECODE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Decode
ENCODE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Encode
FORMAT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Format
INITCAP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Initcap
LEFT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Left
LPAD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Lpad
LTRIM: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ltrim
OCTET_LENGTH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\OctetLength
QUOTE_IDENT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\QuoteIdent
QUOTE_LITERAL: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\QuoteLiteral
QUOTE_NULLABLE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\QuoteNullable
REPEAT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Repeat
REVERSE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Reverse
RIGHT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Right
RPAD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Rpad
RTRIM: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Rtrim
SPLIT_PART: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\SplitPart
STARTS_WITH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\StartsWith
ROW: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Row
STRPOS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Strpos
STRING_TO_ARRAY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\StringToArray
TRANSLATE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Translate
UNNEST: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Unnest
# json specific functions
JSON_ARRAY_LENGTH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonArrayLength
JSON_BUILD_ARRAY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonBuildArray
JSON_BUILD_OBJECT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonBuildObject
JSON_EACH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonEach
JSON_EACH_TEXT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonEachText
JSON_EXISTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonExists
JSON_EXTRACT_PATH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonExtractPath
JSON_EXTRACT_PATH_TEXT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonExtractPathText
JSON_GET_FIELD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonGetField
JSON_GET_FIELD_AS_INTEGER: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonGetFieldAsInteger
JSON_GET_FIELD_AS_TEXT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonGetFieldAsText
JSON_GET_OBJECT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonGetObject
JSON_GET_OBJECT_AS_TEXT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonGetObjectAsText
JSON_OBJECT_KEYS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonObjectKeys
JSON_QUERY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonQuery
JSON_SCALAR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonScalar
JSON_SERIALIZE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonSerialize
JSON_STRIP_NULLS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonStripNulls
JSON_TYPEOF: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonTypeof
JSON_VALUE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonValue
TO_JSON: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ToJson
ROW_TO_JSON: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\RowToJson
# jsonb specific functions
JSONB_ARRAY_ELEMENTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbArrayElements
JSONB_ARRAY_ELEMENTS_TEXT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbArrayElementsText
JSONB_ARRAY_LENGTH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbArrayLength
JSONB_BUILD_ARRAY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbBuildArray
JSONB_BUILD_OBJECT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbBuildObject
JSONB_EACH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbEach
JSONB_EACH_TEXT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbEachText
JSONB_EXISTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbExists
JSONB_EXTRACT_PATH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbExtractPath
JSONB_EXTRACT_PATH_TEXT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbExtractPathText
JSONB_INSERT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbInsert
JSONB_OBJECT_KEYS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbObjectKeys
JSONB_PATH_EXISTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbPathExists
JSONB_PATH_MATCH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbPathMatch
JSONB_PATH_QUERY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbPathQuery
JSONB_PATH_QUERY_ARRAY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbPathQueryArray
JSONB_PATH_QUERY_FIRST: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbPathQueryFirst
JSONB_PRETTY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbPretty
JSONB_SET: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbSet
JSONB_SET_LAX: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbSetLax
JSONB_STRIP_NULLS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbStripNulls
JSONB_TYPEOF: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbTypeof
TO_JSONB: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ToJsonb
# text search specific
ARRAY_TO_TSVECTOR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayToTsvector
JSON_TO_TSVECTOR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonToTsvector
JSONB_TO_TSVECTOR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbToTsvector
PHRASETO_TSQUERY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PhrasetoTsquery
PLAINTO_TSQUERY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PlaintoTsquery
SETWEIGHT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Setweight
STRIP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Strip
TO_TSQUERY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ToTsquery
TO_TSVECTOR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ToTsvector
TS_HEADLINE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TsHeadline
TS_RANK: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TsRank
TS_RANK_CD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TsRankCd
TSMATCH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Tsmatch
TSQUERY_PHRASE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TsqueryPhrase
TSVECTOR_TO_ARRAY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TsvectorToArray
WEBSEARCH_TO_TSQUERY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\WebsearchToTsquery
# date specific functions
AGE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Age
AT_TIME_ZONE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\AtTimeZone
CLOCK_TIMESTAMP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ClockTimestamp
DATE_ADD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\DateAdd
DATE_BIN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\DateBin
DATE_EXTRACT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\DateExtract
DATE_OVERLAPS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\DateOverlaps
DATE_PART: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\DatePart
DATE_SUBTRACT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\DateSubtract
DATE_TRUNC: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\DateTrunc
GENERATE_TIME_SERIES: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\GenerateTimeSeries
ISFINITE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Isfinite
JUSTIFY_DAYS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JustifyDays
JUSTIFY_HOURS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JustifyHours
JUSTIFY_INTERVAL: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JustifyInterval
MAKE_DATE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\MakeDate
MAKE_TIME: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\MakeTime
MAKE_TIMESTAMP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\MakeTimestamp
MAKE_TIMESTAMPTZ: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\MakeTimestamptz
STATEMENT_TIMESTAMP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\StatementTimestamp
TRANSACTION_TIMESTAMP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TransactionTimestamp
# range functions
DATERANGE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Daterange
INT4RANGE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Int4range
INT8RANGE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Int8range
NUMRANGE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Numrange
TSRANGE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Tsrange
TSTZRANGE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Tstzrange
# Arithmetic functions
CBRT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Cbrt
CEIL: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ceil
DEGREES: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Degrees
DIV: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Div
ERF: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Erf
ERFC: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Erfc
EXP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Exp
FACTORIAL: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Factorial
FLOOR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Floor
GAMMA: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Gamma
GCD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Gcd
GENERATE_NUMERIC_SERIES: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\GenerateNumericSeries
LCM: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Lcm
LGAMMA: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Lgamma
LN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ln
LOG: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Log
MIN_SCALE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\MinScale
PI: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Pi
POWER: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Power
RADIANS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Radians
RANDOM: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Random
RANDOM_NORMAL: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\RandomNormal
ROUND: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Round
SCALE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Scale
SIGN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Sign
TRIM_SCALE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\TrimScale
TRUNC: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trunc
WIDTH_BUCKET: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\WidthBucket
# Trigonometric functions
ACOS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Acos
ACOSD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Acosd
ACOSH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Acosh
ASIN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Asin
ASIND: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Asind
ASINH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Asinh
ATAN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Atan
ATAN2: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Atan2
ATAN2D: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Atan2d
ATAND: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Atand
ATANH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Atanh
COS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Cos
COSD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Cosd
COSH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Cosh
COT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Cot
COTD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Cotd
SIN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Sin
SIND: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Sind
SINH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Sinh
TAN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Tan
TAND: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Tand
TANH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Tanh
# other operators
COMPOSITE_FIELD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\CompositeField
ILIKE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ilike
SIMILAR_TO: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\SimilarTo
NOT_SIMILAR_TO: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\NotSimilarTo
UNACCENT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Unaccent
REGEXP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Regexp
IREGEXP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\IRegexp
NOT_REGEXP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\NotRegexp
NOT_IREGEXP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\NotIRegexp
REGEXP_COUNT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\RegexpCount
REGEXP_INSTR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\RegexpInstr
REGEXP_LIKE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\RegexpLike
REGEXP_MATCH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\RegexpMatch
REGEXP_REPLACE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\RegexpReplace
REGEXP_SUBSTR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\RegexpSubstr
STRCONCAT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\StrConcat
DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Distance
# vector distance functions
COSINE_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Vector\CosineDistance
INNER_PRODUCT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Vector\InnerProduct
L2_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Vector\L2Distance
# ltree functions
INDEX: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ltree\Index
LCA: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ltree\Lca
LTREE2TEXT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ltree\Ltree2text
NLEVEL: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ltree\Nlevel
SUBLTREE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ltree\Subltree
SUBPATH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ltree\Subpath
TEXT2LTREE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ltree\Text2ltree
# ltree match operators
MATCHES_LQUERY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ltree\MatchesLquery # ~
MATCHES_LTXTQUERY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ltree\MatchesLtxtquery # @
MATCHES_ANY_LQUERY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ltree\MatchesAnyLquery # ?
# hstore functions
HSTORE_AKEYS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Hstore\Akeys
HSTORE_AVALS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Hstore\Avals
HSTORE_DEFINED: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Hstore\Defined
HSTORE_DELETE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Hstore\Delete
HSTORE_SKEYS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Hstore\Skeys
HSTORE_SVALS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Hstore\Svals
HSTORE_TO_JSON: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Hstore\HstoreToJson
HSTORE_TO_JSON_LOOSE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Hstore\HstoreToJsonLoose
# PostGIS functions
ST_3DDFULLYWITHIN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_3DDFullyWithin
ST_3DDISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_3DDistance
ST_3DDWITHIN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_3DDWithin
ST_3DINTERSECTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_3DIntersects
ST_3DLENGTH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_3DLength
ST_3DPERIMETER: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_3DPerimeter
ST_AREA: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Area
ST_ASEWKT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_AsEWKT
ST_ASGEOJSON: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_AsGeoJSON
ST_ASTEXT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_AsText
ST_AZIMUTH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Azimuth
ST_BOUNDARY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Boundary
ST_BUFFER: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Buffer
ST_CENTROID: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Centroid
ST_CLIPBYBOX2D: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_ClipByBox2D
ST_CLOSESTPOINT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_ClosestPoint
ST_COLLECT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Collect
ST_COLLECTIONEXTRACT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_CollectionExtract
ST_COLLECTIONHOMOGENIZE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_CollectionHomogenize
ST_CONCAVEHULL: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_ConcaveHull
ST_CONTAINS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Contains
ST_CONTAINSPROPERLY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_ContainsProperly
ST_CONVEXHULL: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_ConvexHull
ST_COORDDIM: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_CoordDim
ST_COVERAGEUNION: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_CoverageUnion
ST_COVEREDBY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_CoveredBy
ST_COVERS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Covers
ST_CROSSES: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Crosses
ST_CURVEN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_CurveN
ST_CURVETOLINE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_CurveToLine
ST_DFULLYWITHIN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_DFullyWithin
ST_DIFFERENCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Difference
ST_DISJOINT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Disjoint
ST_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Distance
ST_DWITHIN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_DWithin
ST_ENDPOINT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_EndPoint
ST_ENVELOPE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Envelope
ST_EQUALS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Equals
ST_EXTERIORRING: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_ExteriorRing
ST_FLIPCOORDINATES: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_FlipCoordinates
ST_FORCE2D: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Force2D
ST_FORCE3D: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Force3D
ST_FORCE4D: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Force4D
ST_FRECHETDISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_FrechetDistance
ST_GENERATEPOINTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_GeneratePoints
ST_GEOMETRYN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_GeometryN
ST_GEOMETRYTYPE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_GeometryType
ST_GEOMFROMEWKT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_GeomFromEWKT
ST_GEOMFROMGEOJSON: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_GeomFromGeoJSON
ST_GEOMFROMTEXT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_GeomFromText
ST_HASM: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_HasM
ST_HASZ: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_HasZ
ST_HAUSDORFFDISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_HausdorffDistance
ST_INTERIORRINGN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_InteriorRingN
ST_INTERSECTION: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Intersection
ST_INTERSECTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Intersects
ST_ISCLOSED: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_IsClosed
ST_ISEMPTY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_IsEmpty
ST_ISVALID: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_IsValid
ST_ISVALIDREASON: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_IsValidReason
ST_LENGTH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Length
ST_LENGTH2D: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Length2D
ST_LETTERS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Letters
ST_LINECROSSINGDIRECTION: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_LineCrossingDirection
ST_LINEEXTEND: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_LineExtend
ST_LINEINTERPOLATEPOINT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_LineInterpolatePoint
ST_LINELOCATEPOINT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_LineLocatePoint
ST_LINESUBSTRING: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_LineSubstring
ST_LINETOCURVE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_LineToCurve
ST_MAKEENVELOPE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_MakeEnvelope
ST_MAKELINE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_MakeLine
ST_MAKEPOINT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_MakePoint
ST_MAKEVALID: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_MakeValid
ST_MAXDISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_MaxDistance
ST_MINIMUMBOUNDINGCIRCLE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_MinimumBoundingCircle
ST_NPOINTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_NPoints
ST_NUMCURVES: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_NumCurves
ST_NUMGEOMETRIES: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_NumGeometries
ST_NUMINTERIORRINGS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_NumInteriorRings
ST_NUMPOINTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_NumPoints
ST_OFFSETCURVE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_OffsetCurve
ST_ORDERINGEQUALS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_OrderingEquals
ST_OVERLAPS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Overlaps
ST_PERIMETER: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Perimeter
ST_POINT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Point
ST_POINTINSIDECIRCLE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_PointInsideCircle
ST_POINTN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_PointN
ST_POINTONSURFACE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_PointOnSurface
ST_PROJECT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Project
ST_RELATE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Relate
ST_RELATEMATCH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_RelateMatch
ST_REMOVEIRRELEVANTPOINTSFORVIEW: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_RemoveIrrelevantPointsForView
ST_REMOVESMALLPARTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_RemoveSmallParts
ST_REVERSE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Reverse
ST_ROTATE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Rotate
ST_SCALE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Scale
ST_SEGMENTIZE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Segmentize
ST_SETSRID: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_SetSRID
ST_SHORTESTLINE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_ShortestLine
ST_SIMPLIFY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Simplify
ST_SIMPLIFYPOLYGONHULL: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_SimplifyPolygonHull
ST_SIMPLIFYPRESERVETOPOLOGY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_SimplifyPreserveTopology
ST_SIMPLIFYVW: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_SimplifyVW
ST_SNAP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Snap
ST_SPLIT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Split
ST_SRID: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_SRID
ST_STARTPOINT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_StartPoint
ST_SUBDIVIDE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Subdivide
ST_SYMDIFFERENCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_SymDifference
ST_TILEENVELOPE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_TileEnvelope
ST_TOUCHES: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Touches
ST_TRANSFORM: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Transform
ST_TRANSLATE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Translate
ST_TRIANGULATEPOLYGON: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_TriangulatePolygon
ST_UNARYUNION: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_UnaryUnion
ST_UNION: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Union
ST_VORONOIPOLYGONS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_VoronoiPolygons
ST_WITHIN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Within
ST_X: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_X
ST_Y: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Y
ST_Z: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\ST_Z
# PostGIS operators
BOUNDING_BOX_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\BoundingBoxDistance # <#>
GEOMETRY_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\GeometryDistance # <->
ND_CENTROID_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\NDimensionalCentroidDistance # <<->>
ND_OVERLAPS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\NDimensionalOverlaps # &&&
OVERLAPS_ABOVE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\OverlapsAbove # |&>
OVERLAPS_BELOW: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\OverlapsBelow # &<|
OVERLAPS_LEFT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\OverlapsLeft # &<
OVERLAPS_RIGHT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\OverlapsRight # &>
SPATIAL_CONTAINED_BY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\SpatialContainedBy # @
SPATIAL_CONTAINS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\SpatialContains # ~
SPATIAL_SAME: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\SpatialSame # ~=
STRICTLY_ABOVE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\StrictlyAbove # |>>
STRICTLY_BELOW: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\StrictlyBelow # <<|
STRICTLY_LEFT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\StrictlyLeft # <<
STRICTLY_RIGHT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\StrictlyRight # >>
TRAJECTORY_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PostGIS\TrajectoryDistance # |=|
# pg_trgm functions
SIMILARITY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\Similarity
STRICT_WORD_SIMILARITY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\StrictWordSimilarity
WORD_SIMILARITY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\WordSimilarity
# pg_trgm operators
ARE_SIMILAR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\AreSimilar # %
CONTAINS_STRICT_WORD_SIMILAR_TO: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\ContainsStrictWordSimilarTo # %>>
CONTAINS_WORD_SIMILAR_TO: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\ContainsWordSimilarTo # %>
IS_STRICT_WORD_SIMILAR_TO: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\IsStrictWordSimilarTo # <<%
IS_WORD_SIMILAR_TO: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\IsWordSimilarTo # <%
REVERSE_STRICT_WORD_SIMILARITY_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\ReverseStrictWordSimilarityDistance # <->>>
REVERSE_WORD_SIMILARITY_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\ReverseWordSimilarityDistance # <->>
SIMILARITY_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\SimilarityDistance # <->
STRICT_WORD_SIMILARITY_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\StrictWordSimilarityDistance # <<<->
WORD_SIMILARITY_DISTANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Trgm\WordSimilarityDistance # <<->
# fuzzystrmatch functions
DAITCH_MOKOTOFF: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Fuzzystrmatch\DaitchMokotoff
DIFFERENCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Fuzzystrmatch\Difference
DMETAPHONE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Fuzzystrmatch\Dmetaphone
DMETAPHONE_ALT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Fuzzystrmatch\DmetaphoneAlt
LEVENSHTEIN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Fuzzystrmatch\Levenshtein
LEVENSHTEIN_LESS_EQUAL: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Fuzzystrmatch\LevenshteinLessEqual
METAPHONE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Fuzzystrmatch\Metaphone
SOUNDEX: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Fuzzystrmatch\Soundex
# network address functions
ABBREV: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Network\Abbrev
BROADCAST: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Network\Broadcast
FAMILY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Network\Family
HOST: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Network\Host
HOSTMASK: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Network\Hostmask
INET_MERGE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Network\InetMerge
INET_SAME_FAMILY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Network\InetSameFamily
MASKLEN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Network\Masklen
NETMASK: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Network\Netmask
NETWORK: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Network\Network
SET_MASKLEN: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Network\SetMasklen
# aggregation functions
ARRAY_AGG: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayAgg
BIT_AND: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\BitAnd
BIT_OR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\BitOr
BIT_XOR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\BitXor
BOOL_AND: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\BoolAnd
BOOL_OR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\BoolOr
CORR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Corr
COVAR_POP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\CovarPop
COVAR_SAMP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\CovarSamp
EVERY: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Every
FILTER: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Filter
JSON_AGG: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonAgg
JSON_OBJECT_AGG: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonObjectAgg
JSONB_AGG: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbAgg
JSONB_OBJECT_AGG: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\JsonbObjectAgg
MODE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Mode
PERCENTILE_CONT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PercentileCont
PERCENTILE_DISC: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PercentileDisc
RANGE_AGG: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\RangeAgg
RANGE_INTERSECT_AGG: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\RangeIntersectAgg
STDDEV: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Stddev
STDDEV_POP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\StddevPop
STRING_AGG: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\StringAgg
VAR_POP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\VarPop
VARIANCE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Variance
# Window functions
CUME_DIST: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\CumeDist
DENSE_RANK: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\DenseRank
FIRST_VALUE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\FirstValue
LAG: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Lag
LAST_VALUE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\LastValue
LEAD: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Lead
NTH_VALUE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\NthValue
NTILE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Ntile
OVER: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Over
PERCENT_RANK: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\PercentRank
RANK: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Rank
ROW_NUMBER: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\RowNumber
# XML functions
XML_IS_WELL_FORMED: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\XmlIsWellFormed
XML_IS_WELL_FORMED_CONTENT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\XmlIsWellFormedContent
XML_IS_WELL_FORMED_DOCUMENT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\XmlIsWellFormedDocument
XMLAGG: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\XmlAgg
XMLCOMMENT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\XmlComment
XMLCONCAT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\XmlConcat
XMLEXISTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\XmlExists
XMLPI: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\XmlPi
XMLTEXT: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\XmlText
XPATH: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Xpath
XPATH_EXISTS: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\XpathExists
# hashing and checksum functions
CRC32: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Crc32
CRC32C: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Crc32c
MD5: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Md5
REVERSE_BYTES: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ReverseBytes
SHA224: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Sha224
SHA256: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Sha256
SHA384: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Sha384
SHA512: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Sha512
# uuid functions
GEN_RANDOM_UUID: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\GenRandomUuid
UUID_EXTRACT_TIMESTAMP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\UuidExtractTimestamp
UUID_EXTRACT_VERSION: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\UuidExtractVersion
UUIDV4: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Uuidv4
UUIDV7: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Uuidv7
# type conversion and formatting functions
CAST: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Cast
TO_CHAR: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ToChar
TO_DATE: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ToDate
TO_NUMBER: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ToNumber
TO_TIMESTAMP: MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ToTimestamp
Usage in Entities
Once configured, you can use the PostgreSQL types in your Symfony entities:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use MartinGeorgiev\Doctrine\DBAL\Type;
use MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\DateRange;
use MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Interval;
use MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Ltree;
use MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\NumericRange;
use MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\Point;
use MartinGeorgiev\Doctrine\DBAL\Types\ValueObject\WktSpatialData;
#[ORM\Entity]
#[ORM\Table(name: 'products')]
class Product
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(type: Type::JSONB)]
private array $specifications = [];
#[ORM\Column(type: Type::TEXT_ARRAY)]
private array $categories = [];
#[ORM\Column(type: Type::POINT)]
private Point $manufacturingLocation;
#[ORM\Column(type: Type::NUMRANGE)]
private NumericRange $priceRange;
#[ORM\Column(type: Type::DATERANGE)]
private DateRange $availabilityPeriod;
#[ORM\Column(type: Type::INET)]
private string $originServerIp;
#[ORM\Column(type: Type::INTERVAL)]
private Interval $duration;
#[ORM\Column(type: Type::MONEY)]
private string $price;
#[ORM\Column(type: Type::LTREE)]
private Ltree $pathFromRoot;
#[ORM\Column(type: Type::XML)]
private string $configXml;
}