2017-03-20 33 views
2

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

答えて

0

だから、問題はスキーマを指定しているようです。 PgAdminでは、db関数を使用するためにdb関数が一部であるスキーマを指定する必要がないようです。 Laravelでは、db関数のスキーマを指定する必要があります。だから、私のコードは動作しますが、関数にdbスキーマを追加するだけでした。

私はいつもクエリはパブリックスキーマにデフォルト設定されていると思っていましたが、この場合は定義する必要があります。

0

あなたはlaravelのためのPostGISの拡張子を使用していますか? THISのようなものです。

デフォルトでは、laravelは、postgis用に拡張が追加されていない場合、ST_GeomFromTextが基本データベース機能であるかどうかを確認しようとします。 これは、ジオメトリを持つオブジェクトの操作を簡単にするのに役立ちます。 希望に役立ちます。

また、RAW SQLを実行してみてください。 このように:

DB::insert('QUERY...'); 

クエリパラメータを適切にエスケープしてください。

+0

パッケージがWKTをサポートしているようには見えません。ビルドに失敗していて、ドキュメントは恐ろしいものです。また、あなたが私の全質問を読んでいるなら、私はすでに 'DB :: insert()'を試していることがわかります。提案のおかげで – Sehael

+0

文書が偉大ではないと同意します。ソースコードからWKTをサポートしているように見えます。 – user4212639

関連する問題