postgisql拡張機能を使用してpostgresqlデータにジオメトリを挿入しようとしています。具体的には、WKTの線ストリングを挿入します。Laravelを使用してpostgis関数で挿入します。
$sql = "INSERT INTO myschema.trail (\"name\", \"description\", \"user_id\", \"location_id\", \"source_file\", \"geom\")
VALUES ('".
$p['name']."', '".
$p['description']."', ".
\Auth::user()->user_id.", ".
$p['location_id'].", '".
'uploads/myfile'.",
ST_GeomFromText('$wkt'::text))";
\DB::insert($sql);
を私はこれを行うと、私はエラーを取得:
SQLSTATE[42883]: Undefined function: 7 ERROR: function st_geomfromtext(text) does not exist
私が最初にこの使用してパラメータを実行しようとしましたが、同じ問題を持っていたこれは私がやっていることです。私はコピーして生成されたSQL文を貼り付け、pgAdminででクエリを実行すると
INSERT INTO myschema.trail ("name", "description", "user_id", "location_id", "source_file", "geom")
VALUES ('Test', 'Test', 1, 1, 'uploads/myfile', ST_GeomFromText('LINESTRING(-114.0653326549 49.2872680351, .............'))
、クエリは問題なく実行されます。エラーは、以下のSQL生成することを示しています私は許可の問題であった場合、私のアプリケーションでpostgresユーザーを使用しようとしましたが、それは助けになりませんでした。
私はクエリのpostgis部分を削除すると、私のアプリケーションからうまく動作します。何らかの理由で私のLaravelアプリケーションはpostgis関数を使うことができませんが、pgAdminは使えます。
これまでに気付いたことはありますか?これを解決する方法はありますか?おかげ
EDIT
は、私はちょうどとしても、次の試してみました、と私は同じエラーを得た:
Trail::create([
'name' => 'test',
'description' => 'test',
'user_id' => 1,
'location' => 1,
'source_file' => 'uploads/myfile',
'geom' => \DB::raw("ST_GeomFromText('$wkt'::text)")
]);
パッケージがWKTをサポートしているようには見えません。ビルドに失敗していて、ドキュメントは恐ろしいものです。また、あなたが私の全質問を読んでいるなら、私はすでに 'DB :: insert()'を試していることがわかります。提案のおかげで – Sehael
文書が偉大ではないと同意します。ソースコードからWKTをサポートしているように見えます。 – user4212639