2011-12-03 35 views
6

Tôi muốn viết phần mở rộng GIS (dữ liệu không gian địa lý) cho dự án Doctrine 2 của tôi.Mở rộng GIS cho Doctrine 2

Tôi biết cách viết các loại và chức năng tùy chỉnh đơn giản. Để phù hợp với định dạng lưu trữ đặc biệt của MySQL, tôi cần sử dụng một số hàm SQL (GeomFromWKB() và AsBinary()) khi truy xuất/lưu trữ dữ liệu.

Tôi không thể tìm thấy một nơi mà tôi nói với Doctrine 2 này. Như tôi thấy, các phương thức convertToPHPValue() và convertToDatabaseValue() không đúng.

Trả lời

1

gì tôi phát hiện ra cho đến nay: Theo kênh IRC, convertToPHPValueSQL() và convertToDatabaseValueSQL() sẽ là một phần của phiên bản tiếp theo, và sẽ cung cấp các chức năng cần thiết. Khi đã có sẵn, việc xác định một CustomType khá đơn giản.

+0

Chỉ cập nhật: Trong chuỗi Doctrine 2.1.x, các chức năng này đã được đưa vào. Xem tại đây: http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#custom-mapping-types –

1

Nếu bạn muốn gọi hàm SQL trong doctrine2, bạn có thể làm điều đó là Biểu thức Func nhưng điều này sẽ chỉ hoạt động với DQL.

Ở đây bạn có ví dụ sẽ cho bạn biết cách sử dụng hàm DATE_DIFF không được bao gồm trong học thuyết.

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

Cảm ơn, đó là một gợi ý tốt cho SQL thỉnh thoảng rằng bạn chỉ cần một lần trong một dự án. – Tom

0

Cập nhật/thay thế:

Tôi đã tìm thấy tiện ích mở rộng symfony2 phục vụ hầu hết nhu cầu của tôi. Tôi đã chia hai nó và thêm vào những gì tôi cần ở đây:

https://github.com/tvogt/doctrine2-spatial/

Các vấn đề liên quan