【问题标题】:Using Laravel's Seeding to seed coordinates with ST_GEOMFROMTEXT, leads to error使用 Laravel 的 Seeding 以 ST_GEOMFROMTEXT 播种坐标,导致错误
【发布时间】:2018-01-29 17:20:12
【问题描述】:

我正在尝试制作播种器文件来播种我的桌子。但问题是一个字段是 POLYGON 类型,根据 SQL,我必须使用 ST_GEOMFROMTEXT 插入坐标。

我尝试在没有播种的情况下执行的查询仅使用 SQL 即可完美运行

所以我正在尝试这样:

ST_GEOMFROMTEXT('POLYGON((27.35321 57.515823,27.279053 57.53499399999998,27.349091 57.533151,27.352524 57.51637600000001,27.35321 57.515823))')

但这会导致我出错:

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

这是函数:

public function run(){
        DB::table('country')->insert([
            'polygon' => "ST_GEOMFROMTEXT('POLYGON((27.35321 57.515823,27.279053 57.53499399999998,27.349091 57.533151,27.352524 57.51637600000001,27.35321 57.515823))')"
        ]);
}

从坐标可以看出,那么起点和终点是相同的。语法也是正确的。所以我不知道,我做错了什么。谁能引导我走向正确的轨道?

【问题讨论】:

  • 你试过 DB::raw 吗?
  • @Tschallacka 哦,那是我没有尝试过的。我刚刚做到了,它奏效了。非常感谢。工作太多不好。
  • 除了 DB::raw 还有其他方法吗?
  • @SaquibLari 你可以使用github.com/njbarrett/laravel-postgis

标签: php mysql sql laravel laravel-seeding


【解决方案1】:

尝试将 DB::raw() 用于未在https://laravel.com/docs/5.0/schema#adding-columns 下列出的内容

https://laravel.com/docs/5.4/database#running-queries

请记住,它会将您的应用程序限制为接受该语法的特定数据库引擎。

理想情况下,您应该使用您的类型扩展语法,并针对您的应用可能在其上运行/测试的所有数据库引擎修改它,例如用于单元测试的 sqlite。

【讨论】:

    猜你喜欢
    • 2014-11-26
    • 1970-01-01
    • 2022-10-18
    • 2017-07-27
    • 2014-07-28
    • 1970-01-01
    • 2021-11-28
    • 2014-08-26
    • 2014-12-08
    相关资源
    最近更新 更多