2011-12-03 30 views
6

我想为我的Doctrine 2项目编写GIS(地理空间数据)扩展。Doctrine 2的GIS扩展

我知道如何编写简单的自定义函数和类型。为了适应MySQL的特殊存储格式,我需要在检索/存储数据时使用一些SQL函数(GeomFromWKB()和AsBinary())。

我找不到我告诉Doctrine 2这个地方。正如我所看到的,convertToPHPValue()和convertToDatabaseValue()方法不是正确的地方。

回答

1

我发现迄今: 根据IRC频道,convertToPHPValueSQL()和convertToDatabaseValueSQL()将是下一个版本的一部分,并会提供所需的功能。一旦可用,定义CustomType就相当简单。

+0

只需更新:在Doctrine 2.1.x系列中,已包含这些功能。看到这里:http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#custom-mapping-types –

1

如果你想在doctrine2中调用SQL函数,你可以这样做表达式Func,但这只适用于DQL。

这里有一个例子,它会告诉你如何使用不包含在doctrine中的DATE_DIFF函数。

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

谢谢,这是一个很好的提示适用于偶尔的SQL,你只需要一次一个项目。 – Tom