"require": {
...
"creof/doctrine2-spatial": "dev-master"
You will also have to change the version requirement of doctrine to at least 2.1:
"doctrine/orm": ">=2.1",
Add the types and functions you need to your Symfony configuration. The doctrine type names are not hardcoded.
doctrine:
dbal:
types:
geometry: CrEOF\Spatial\DBAL\Types\GeometryType
point: CrEOF\Spatial\DBAL\Types\Geometry\PointType
polygon: CrEOF\Spatial\DBAL\Types\Geometry\PolygonType
linestring: CrEOF\Spatial\DBAL\Types\Geometry\LineStringType
orm:
dql:
string_functions:
# for postgresql
geometry: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\Geometry
stbuffer: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STBuffer
stcollect: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STCollect
stsnaptogrid: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STSnapToGrid
stoverlaps: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STOverlaps
numeric_functions:
# for postgresql
starea: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STArea
stasbinary: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STAsBinary
stasgeojson: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STAsGeoJson
stastext: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STAsText
stazimuth: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STAzimuth
stboundary: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STBoundary
stcentroid: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STCentroid
stclosestpoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STClosestPoint
stcontains: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STContains
stcontainsproperly: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STContainsProperly
stcoveredby: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STCoveredBy
stcovers: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STCovers
stcrosses: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STCrosses
stdisjoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STDisjoint
stdistance: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STDistance
stdistancesphere: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STDistanceSphere
stdwithin: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STDWithin
stenvelope: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STEnvelope
stexpand: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STExpand
stextent: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STExtent
stgeomfromtext: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STGeomFromText
stintersection: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STIntersection
stintersects: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STIntersects
stlength: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STLength
stlinecrossingdirection: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STLineCrossingDirection
stlineinterpolatepoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STLineInterpolatePoint
stmakebox2d: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STMakeBox2D
stmakeline: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STMakeLine
stmakepoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STMakePoint
stperimeter: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STPerimeter
stpoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STPoint
stscale: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STScale
stsetsrid: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STSetSRID
stsimplify: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STSimplify
ststartpoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STStartPoint
stsummary: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STSummary
sttouches: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STTouches
sttransform: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STTransform
# for mysql
area: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Area
asbinary: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\AsBinary
astext: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\AsText
buffer: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Buffer
centroid: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Centroid
contains: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Contains
crosses: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Crosses
dimension: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Dimension
distance: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Distance
disjoint: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Disjoint
distancefrommultyLine: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\DistanceFromMultyLine
endpoint: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\EndPoint
envelope: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Envelope
equals: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Equals
exteriorring: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\ExteriorRing
geodistpt: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\GeodistPt
geometrytype: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\GeometryType
geomfromtext: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\GeomFromText
glength: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\GLength
interiorringn: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\InteriorRingN
intersects: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Intersects
isclosed: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\IsClosed
isempty: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\IsEmpty
issimple: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\IsSimple
linestringfromwkb: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\LineStringFromWKB
linestring: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\LineString
mbrcontains: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBRContains
mbrdisjoint: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBRDisjoint
mbrequal: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBREqual
mbrintersects: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBRIntersects
mbroverlaps: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBROverlaps
mbrtouches: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBRTouches
mbrwithin: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBRWithin
numinteriorrings: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\NumInteriorRings
numpoints: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\NumPoints
overlaps: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Overlaps
pointfromwkb: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\PointFromWKB
pointn: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\PointN
point: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Point
srid: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\SRID
startpoint: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\StartPoint
st_buffer: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STBuffer
st_contains: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STContains
st_crosses: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STCrosses
st_disjoint: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STDisjoint
st_distance: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STDistance
st_distance_sphere: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STDistanceSphere
st_equals: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STEquals
st_intersects: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STIntersects
st_overlaps: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STOverlaps
st_touches: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STTouches
st_within: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STWithin
touches: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Touches
within: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Within
x: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\X
y: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Y
Simply add new class in vendor\slavenin\doctrine2-spatial\lib\CrEOF\Spatial\ORM\Query\AST\Functions\MySql\ with need function name and config.yml.
Example:
class Point extends AbstractSpatialDQLFunction
{
protected $platforms = array('mysql');
/*function name in dql*/
protected $functionName = 'Point';
/*min params count*/
protected $minGeomExpr = 2;
/*max params count*/
protected $maxGeomExpr = 2;
}