laravel 背包 postgis 几何领域

Posted

技术标签:

【中文标题】laravel 背包 postgis 几何领域【英文标题】:laravel backpack postgis geometry field 【发布时间】:2021-04-25 18:21:47 【问题描述】:

我正在尝试创建一个 POSGIS Laravel Backpack CRUD,并且我生成了模型和控制器。 我有一个带有 geom 、 name 、 address 列的模型位置,我正在尝试手动将一个值插入数据库。

功能性 postgis 插入应该是这样的:

insert into locations (geom, name , address) values (st_geomfromtext('POINT(731948.274744 424549.929507)', 3844), 'test' , 'test navicat')

我试图应用于 geom 字段的手动值是这样的

$this->crud->addField([
        'name'  => 'geom',
        'type'  => 'hidden',
       'value' =>  \DB::raw("st_geomfromtext('POINT(731948.274744 424549.929507)'), 3844)")
    ]);

但是sql错误是

SQLSTATE[XX000]: Internal error: 7 ERROR: parse error - invalid geometry HINT: "st" <-- parse error at position 2 within geometry (SQL: insert into "locations" ("name", "address", "geom", "updated_at", "created_at") values (t, t, st_geomfromtext('POINT(731948.274744 424549.929507)'), 3844), 2021-01-21 10:29:15, 2021-01-21 10:29:15) returning "id")

我无法弄清楚我该如何解决这个问题 提前谢谢你

【问题讨论】:

你在用mysql吗?如果属实,什么版本? 嗯,看到您为此使用value 参数有点奇怪。您是否也可以在模型本身内部使用 Laravel Mutator 来执行此操作?laravel.com/docs/8.x/eloquent-mutators#defining-a-mutator 我在创建时通过模型事件解决了模型内部的问题 static::creating(function ($questionnaire) // 相同的代码 ); 【参考方案1】:

我在创建 postgis 条目时解决了模型内的事件问题

   static::creating(function ($questionnaire) 
    // Same code here
);

【讨论】:

以上是关于laravel 背包 postgis 几何领域的主要内容,如果未能解决你的问题,请参考以下文章

jetbrains datagrip 中是不是有 postgis 几何查看器?

Postgis几何边界上的两个最近点

POSTGIS:错误:对混合 SRID 几何图形的操作。试图用两个不同的 SRIDS/表找到重叠的几何

postgis修复几何,修复自相交

Liquibase 使用 Postgis“几何”类型创建表

在 Apache Spark JDBC DataFrame 中使用 Postgis 几何类型