2017-08-21 2 views
1

Ich versuche eine Seedatei zu erstellen, die meine Tabelle sät. Aber das Problem ist, dass ein Feld eine Art von POLYGON ist und ich nach SQL die ST_GEOMFROMTEXT verwenden muss, um Koordinaten einzufügen.Die Verwendung von Laravels Seeding zum Initialisieren von Koordinaten mit ST_GEOMFROMTEXT führt zu einem Fehler

Die Abfrage ich ohne Impfen zu tun versuchen, funktioniert perfekt mit nur

SQL

Also ich so bin versucht:

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

Aber dies führt mich Fehler:

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

Dies ist die Funktion:

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

Wie Sie aus den Koordinaten sehen können, ist der Startpunkt und der Endpunkt identisch. Auch die Syntax ist korrekt. Also ich weiß nicht, was ich falsch mache. Kann mich jemand auf den richtigen Weg führen?

+1

Haben Sie versucht DB :: Raw? – Tschallacka

+1

@Tschallacka ohh, das war die Sache, die ich nicht versucht habe. Ich habe es einfach getan und es hat funktioniert. Vielen Dank. Zu viel Arbeit ist nicht gut. –

+0

Gibt es einen anderen Weg als DB :: Raw? –

Antwort

2

Try-DB :: raw() für die Dinge nicht unter https://laravel.com/docs/5.0/schema#adding-columns

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

im Auge behalten Bitte aufgeführt wird Ihre Anwendung auf eine bestimmte Datenbank-Engine beschränken, die diese Syntax akzeptiert.

Idealerweise würden Sie die Grammatik um Ihren Typ erweitern und ihn für alle Datenbank-Engines modifizieren, auf denen Ihre App wie sqlite für Komponententests ausgeführt/getestet werden könnte.

Verwandte Themen