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