2011-12-03 22 views
6

Chcę napisać rozszerzenie GIS (danych geoprzestrzennych) dla mojego projektu Doctrine 2.Rozszerzenie GIS dla Doctrine 2

Wiem, jak pisać proste niestandardowe funkcje i typy. Aby uwzględnić specjalny format pamięci MySQL, potrzebuję użyć jakiejś funkcji SQL (GeomFromWKB() i AsBinary()) podczas pobierania/przechowywania danych.

Nie mogę znaleźć miejsca, w którym powiem Doktrynie 2 tego. Jak widzę, metody convertToPHPValue() i convertToDatabaseValue() nie są właściwym miejscem.

Odpowiedz

1

Co dowiedziałem się do tej pory: Według kanale IRC convertToPHPValueSQL() i convertToDatabaseValueSQL() będzie częścią następnej wersji, i oferują funkcjonalność wymaganą. Gdy jest to możliwe, definiowanie typu niestandardowego jest dość proste.

+0

Właśnie aktualizacja: w serii Doctrine 2.1.x funkcje te zostały uwzględnione. Zobacz tutaj: http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#custom-mapping-types –

1

Jeśli chcesz wywołać funkcję SQL w doctrine2, możesz to zrobić jako Expression Func, ale to zadziała tylko z DQL.

Tutaj masz przykład, który powie Ci, jak używać funkcji DATE_DIFF, która nie jest zawarta w doktrynie.

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

Dzięki, że to dobra wskazówka dla okazjonalnych SQL że wystarczy tylko raz w projekcie. – Tom