配置 jsor 库以使 symfony 2/doctrine 2 与 postgis 扩展一起使用

2024-01-06

使用 Symfony 2.8.24 和 PostGIS

我需要THE TITLE。我发现this https://github.com/jsor/doctrine-postgis在 github 中,但问题是那里的配置步骤对我没有多大帮助。我不知道是否是因为我无法使用在线作曲家(代理)来安装它,如第一步所述。

IRDK从哪里开始,例如我没有看到路径'Jsor\Doctrine\PostGIS\Types\GeographyType'任何地方在我正在使用的文件 https://github.com/jsor/doctrine-postgis/archive/master.zip所以我不知道在哪里复制它们来使用它们,或者可能与它无关。

我知道它要求很多,但有人可以引导我完成它,或者向我指出如何从一开始就将这个库包含在 symfony2.8 中,我已经使用 Symfony 一段时间了(不是 postgis),但仍然有一个非常困难的问题时间包括这种第三方库,所以我们在这里讨论的是婴儿步骤。谢谢


确保您的 postgresql 服务器上安装了 postgis 扩展。

通过 Composer 安装包。

composer require jsor/doctrine-postgis

将类型添加到doctrine-bundle 的配置中。

Example:

# app/config/config.yml
doctrine:
  orm:
    # [..]
    entity_managers:
      default:
        dql:
          string_functions:
            Geometry:             Jsor\Doctrine\PostGIS\Functions\Geometry
            Geography:            Jsor\Doctrine\PostGIS\Functions\Geography
            ST_Distance:          Jsor\Doctrine\PostGIS\Functions\ST_Distance
            ST_Distance_Sphere:   Jsor\Doctrine\PostGIS\Functions\ST_Distance_Sphere
            ST_DWithin:           Jsor\Doctrine\PostGIS\Functions\ST_DWithin
            ST_GeomFromText:      Jsor\Doctrine\PostGIS\Functions\ST_GeomFromText
            ST_GeographyFromText: Jsor\Doctrine\PostGIS\Functions\ST_GeographyFromText
            ST_Transform:         Jsor\Doctrine\PostGIS\Functions\ST_Transform
            ST_Point:             Jsor\Doctrine\PostGIS\Functions\ST_Point
            ST_SetSRID:           Jsor\Doctrine\PostGIS\Functions\ST_SetSRID
            ST_AsEWKT:            Jsor\Doctrine\PostGIS\Functions\ST_AsEWKT

创建一个实体:

namespace My\Entity;

class GeoLocation
{
    protected $latitude;

    protected $longitude;

    protected $point;

    public function __construct($latitude, $longitude)
    {
        $this->longitude = $longitude;
        $this->latitude = $latitude;
        $this->setPoint();
    }

    protected function setPoint()
    {
        $this->point = sprintf(
          'POINT(%f %f)', 
          (string)$this->longitude,
          (string)$this->latitude
        );
    }

    public function getPoint()
    {
        return $this->point;
    }

    public function getLatitude()
    {
        return (float) $this->latitude;
    }

    public function getLongitude()
    {
        return (float) $this->longitude;
    }
}

为您的实体添加映射:

My\Entity\GeoLocation:
  type: 'entity'
  indexes:
    idx_point:
      columns:
        - 'point'
      flags:
        - 'spatial'
  id:
    id:
      type: integer
      generator:
        strategy: AUTO
  fields:
    longitude:
      nullable: true
      type: 'decimal'
      precision: 9
      scale: 6
    latitude:
      nullable: true
      type: 'decimal'
      precision: 8
      scale: 6
    point:
      nullable: true
      type: 'geography'
      options:
        geometry_type: 'POINT'
        srid: 4326

更新您的数据库架构:

app/console doctrine:schema:update [--force]

现在节省一些积分...

最后使用您的学说存储库中的 postgis 类型:

public function findByDistanceFrom($latitude, $longitude, $distanceInMeters)
{
  $qb = $this->createQueryBuilder('geolocation');
  $pointFrom = 'Geography(ST_SetSRID(ST_Point(geolocation.longitude, geolocation.latitude), 4326))';
  $pointTo = 'Geography(ST_SetSRID(ST_Point(:longitude, :latitude), 4326))';
  $qb
    ->where( $qb->expr()->eq("ST_DWithin($pointFrom, $pointTo, :distance_in_meters)", $qb->expr()->literal(true) ) )
    ->setParameter('latitude', $latitude)
    ->setParameter('longitude', $longitude)
    ->setParameter('distance_in_meters', $distanceInMeters)
  ;

  return $qb
    ->getQuery()
    ->getResult()
  ;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

配置 jsor 库以使 symfony 2/doctrine 2 与 postgis 扩展一起使用 的相关文章

随机推荐

  • 为什么“join”不是“Monad”类的一部分[重复]

    这个问题在这里已经有答案了 众所周知的事实是 gt gt 可以使用来实现fmap and join while join可以使用来实现 gt gt 我们有什么理由不定义Monad与 一起上课join包含并使用以下默认定义 join x x
  • 图表js可以处理多少数据

    对于我的应用程序 我正在发出数千个数据点的获取请求 当我使用图表js显示数据时 渲染时间很长 而且我遇到了滞后 我还注意到每个数据点的 x 轴标签没有正确显示 因此必须省略它们 我喜欢图表的时尚设计和用户界面 但无法让它很好地适合我的用例
  • 关闭谷歌地图 API v3 中所有打开的信息窗口

    正如标题所述 在给定的事件中 对我来说 这恰好是在打开一个新的事件时 google maps InfoWindow我希望能够关闭任何其他当前打开的信息窗口 现在 我可以一次打开很多个 但我只想一次只打开一个 我正在动态创建信息窗口 即我不提
  • 返回 f 字符串的 For 循环函数

    我是 python 新手 尝试编写一个函数 该函数接受字典列表并返回一个新的字符串列表 其中每个字典中的名字和姓氏键连接在一起 names first John last Smith first Jessie last Snow def n
  • 无法在react.js中使用本地图像

    基本上我无法使用本地图像 我真的不确定为什么 我已经安装了 url loader 和 file loader 并尝试请求该文件 HeaderNavigation js 我尝试使用的图像位于同一目录中 并被引用为品牌图像 Created by
  • 通过 Visual Studio 代码 launch.json 运行 foreman start

    目前 我正在通过输入运行我的解决方案foreman start进入命令行 工作正常 我正在尝试使用 Visual Studio 代码调试我的代码 为此 我创建了一个 launch json 文件 version 0 2 0 configur
  • 在Python中以特定模式打印字母

    我有以下字符串并将其拆分 gt gt gt st 2g k 3p gt gt gt l filter None st split gt gt gt print l 2g k 3p 现在我想打印 g 字母两次 k 字母一次 p 字母三次 gg
  • 双面文件问题

    我正在程序中读取 system32 文件夹中的一些文件 其中一个文件 C Windows System32 gdi32 dll 表现出一种非常奇怪的行为 当我从程序中读取它时 它显示大小为 310 784 字节 当我从资源管理器查看它的大小
  • 如何从控制器调用 EditorFor

    我有地点列表 public class Location public string LocationName get set public string Address get set 我为此类创建了编辑器模板 div span Html
  • 从视频文件创建缩略图返回空位图

    我发送启动摄像机的意图 PackageManager pm getPackageManager if pm hasSystemFeature PackageManager FEATURE CAMERA Intent video new In
  • 在三层控制台应用程序中使用常量或全局变量

    我有一个像这样的 3 层应用程序设置 带有控制台表示层 在我的业务逻辑中 我有一个类 我在其中声明了许多固定的不同变量 即值不会改变 这些变量的值取自应用程序设置 现在我发现的问题是我的类调用不同的方法 其中这些变量通过方法签名传递 这是好
  • 如何合并单个提交?

    有时我同时与多个分支机构合作 假设我有名为 master release 1 1 和 Experimental 的分支 我创建一个新文件或在实验中进行更改 并且我希望将一项更改应用于其他分支 我可以在 git 中执行此操作吗 如果我只是将提
  • “已连接”UDP 套接字收到 ICMP 端口不可达

    基于 UDP 是无连接协议的前提 我假设主机是否启动或关闭都无关紧要 然而 现在我正在进行测试 我发现当我 连接 我的 UDP 客户端套接字时 write到该套接字会返回错误 因为服务器已发回 ICMP 端口不可达错误 连接 UDP端口的目
  • 如何测量 Android 上的 VRAM 消耗?

    我想获取Android设备VRAM大小 有没有从程序中获取的方法 让我们使用 Nexus One 进行一些计算 屏幕分辨率为 480x800 因此所需的最小视频内存大小为 400 800 4 bytes 1536000 bytes 假设驱动
  • 用于获取 HDR(高动态范围)是否处于活动状态的 Windows API

    我的环境是Windows 10 20H2 64位 和Visual Studio 2019 我正在开发一个应用程序作为 C WPF NET 5 项目 我想编写一个代码 表明 HDR 高动态范围 当前在系统上处于活动状态 在本文档中 https
  • 如何在 Objective C 中将一个块作为参数传递给另一个块

    我正在尝试定义一个以块作为参数的块 下面这行代码有什么问题 id cacheResult NSString id void NSString name id void block NSObject item nil block return
  • nvm:无法卸载当前活动的节点版本

    我正在 OSX 上执行此操作 我需要删除节点 但是当我输入 cmd 后 nvm uninstall v4 4 7它提示我nvm 无法卸载当前活动的节点版本 v4 4 7如何彻底卸载node 只需输入以下命令 nvm deactivate 然
  • AWS Kinesis 中的分区键是什么?

    我正在读关于AWS Kinesis 在下面的程序中 我将数据写入名为的流中TestStream 我运行这段代码 10 次 将 10 条记录插入到流中 var params Data More Sample data into the tes
  • Javascript函数变量突然变得未定义?

    这是最奇怪的事情 我的代码如下 function menuSwipe init dojo query div fill div container div menu div group ul forEach function item do
  • 配置 jsor 库以使 symfony 2/doctrine 2 与 postgis 扩展一起使用

    使用 Symfony 2 8 24 和 PostGIS 我需要THE TITLE 我发现this https github com jsor doctrine postgis在 github 中 但问题是那里的配置步骤对我没有多大帮助 我不