2011-12-03 19 views
6

Quiero escribir una extensión GIS (datos geoespaciales) para mi proyecto Doctrine 2.Extensión GIS para Doctrine 2

Sé cómo escribir funciones y tipos personalizados simples. Para acomodar el formato de almacenamiento especial de MySQL, necesito usar alguna función de SQL (GeomFromWKB() y AsBinary()) al recuperar/almacenar datos.

No encuentro ningún lugar donde contarle a Doctrine 2 esto. Como lo veo, los métodos convertToPHPValue() y convertToDatabaseValue() no son el lugar correcto.

Respuesta

1

Lo que he encontrado hasta ahora: De acuerdo con el canal de IRC, convertToPHPValueSQL() y convertToDatabaseValueSQL() será parte de la próxima versión, y ofrecerá la funcionalidad requerida. Una vez que esté disponible, definir un CustomType es bastante sencillo.

+0

Solo actualizando: En la serie Doctrine 2.1.x estas funciones han sido incluidas. Vea aquí: http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#custom-mapping-types –

1

Si desea llamar a la función SQL en doctrine2, puede hacerlo con Expression Func pero esto solo funcionará con DQL.

Aquí tienes un ejemplo que te dirá cómo usar la función DATE_DIFF que no está incluida en doctrine.

$qb = $repository->createQueryBuilder('l'); 
$qb->expr()->lte(new Doctrine\ORM\Query\Expr\Func('DATE_DIFF',array('lo.start_date', 'CURRENT_DATE()')),'0'); 
+0

Gracias, es un buen indicio para el SQL ocasionales que sólo se necesita una vez en un proyecto. – Tom