用Laravel Lumen播种空间领域

时间:2018-01-19 10:47:29

标签: php laravel lumen geo

我正在使用Laravel(5.5)Lumen,PHP 7.2,MySQL 5.7,并且我在一个使用MySQL点空间字段类型的表中有一个字段。它是正确创建的,但我无法弄清楚如何从Seeder填充它。

该字段是在如下声明的迁移中创建的:

$table->point('location')->spatialIndex();

$tableBlueprint

然后我尝试像这样播种:

DB::table('locations')->insert(
    [
        'location' => "ST_GeomFromText('POINT(140.7484404 -73.9878441)')"
    ]
);

或:

'location' => 'POINT(140.7484404 -73.9878441)'

我也试过这个,因为我添加了grimzy/laravel-mysql-spatial包:

'location' => new Grimzy\LaravelMysqlSpatial\Types\Point(140.7484404, -73.9878441)

但所有这些都给出了一些变化:

  

SQLSTATE [22003]:数值超出范围:1416无法从发送到GEOMETRY字段的数据中获取几何对象

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我知道已经过去两年了,我使用point这样的DB::raw解决了一个类似的问题:

'location' => \DB::raw('POINT(140.7484404 -73.9878441)')

在没有DB::raw的情况下,POINT(x,y)查询的INSERT部分包装在'内部。

lumen / laravel文档中有关DB::raw的更多信息。