【问题标题】:Seeding spatial fields with Laravel Lumen使用 Laravel Lumen 播种空间字段
【发布时间】:2018-06-28 14:09:15
【问题描述】:

我正在使用 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 字段的数据中获取几何对象

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

【问题讨论】:

  • 我不知道如何解决这个问题 - 我没有使用 Builder。无论如何,蓝图都支持空间字段,因此不使用该包应该是可能的 - 我只是对它感兴趣以进一步增强。

标签: php laravel lumen geo


【解决方案1】:

我知道已经两年多了,我使用DB::raw 解决了与point 类似的问题,如下所示:

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

如果没有DB::rawINSERT 查询的POINT(x,y) 部分将包装在' 中。

有关DB::raw 的更多信息,请参见lumen/laravel 文档。

【讨论】:

    猜你喜欢
    • 2013-05-06
    • 1970-01-01
    • 2015-02-10
    • 2018-09-03
    • 2017-03-15
    • 1970-01-01
    • 2018-04-09
    • 2020-05-19
    • 2019-06-12
    相关资源
    最近更新 更多