alireza / geobundle

Doctrine Geo 扩展

dev-master 2017-01-24 13:37 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:35:56 UTC


README

此包提供了一个简单的 MySQL POINT 数据类型集成和一些距离计算。

请注意:此包处于早期开发阶段,使用时请自行承担风险!

安装

请使用 composer(通过自定义仓库)安装此包,并将以下选项添加到您的 config.yml 文件中

doctrine:
	dbal:
        types:
            point: Digilist\GeoBundle\ORM\PointType
        mapping_types:
            point: point

    orm:
        dql:
            numeric_functions:
                DISTANCE: Digilist\GeoBundle\ORM\Distance

使用方法

安装后,您现在可以在实体定义中使用新的 POINT 数据类型。

/**
 * @Column(type="point")
 */
private $coordinates;

距离计算(您可以在查询构建器或 DQL 函数的任何地方使用 DISTANCE 函数)

// Query Builder
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->from('Company', 'c')
   ->where('DISTANCE(c.coordinates, :lat, :lng) < 20')
   ->setParameter('lat', $point->getLatitude())
   ->setParameter('lng', $point->getLongitude());