2017-08-21 102 views
1

私のテーブルをシードするシードファイルを作成しようとしています。しかし問題は、1つのフィールドがPOLYGONのタイプであり、SQLによれば、座標を挿入するためにST_GEOMFROMTEXTを使用する必要があるということです。Laravelのシードを使用して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))') 

しかし、これはエラーに私をリード:

Numeric value out of range: 1416 Cannot get geometry object from data you send to the GEOMETRY field

これは関数です。

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))')" 
     ]); 
} 

座標からわかるように、開始点と終了点は同じです。構文も正しいです。だから、私は間違っていることを知らない。誰かが私を正しい道に導くことができますか?

+1

DB :: rawを試しましたか? – Tschallacka

+1

@Tschallackaオハイオ州、それは私が試していないことでした。私はちょうどそれをやったと働いた。どうもありがとうございました。あまりにも多くの仕事は良くありません。 –

+0

DB :: rawの方法はありますか? –

答えて

2

は、それがその構文を受け入れ、特定のデータベース・エンジンにアプリに制限されますのでご注意下さいhttps://laravel.com/docs/5.0/schema#adding-columns

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

の下にリストされていないもののために)DB ::生を(使用してみてください。

あなたのタイプで文法を拡張し、あなたのアプリケーションがsqliteのような単体テストで実行/テストするすべてのデータベースエンジン用に修正するのが理想的です。

関連する問題