Mysql uzamsal veri türleri nasıl işlenir ORM ?, Bu, geçiş oluşturma, uzamsal veri ekleme ve uzamsal sorguların nasıl gerçekleştirileceğini içerir. Mevcut çözümler yoksa, herhangi bir geçici çözüm var mı?Taşıma Mysql Dairesel mekansal veri kümeleri Elovel ORTA
16
A
cevap
9
Bir süre önce uygulamış bir geçici çözüm aşağıdaki doğrulamaları ile model üzerinde bir enlem ve boylam alanlara sahip olmaktır (Validator class bakınız):
$rules = array('latitude' => 'required|numeric|between:-90,90',
'longitude'=>'required|numeric|between:-180,180',)
sihirli modelin boot method üzerine geldiği @jhmilan her zaman Şeması kullanabilirsiniz :: göç özelleştirmek için yöntemler oluşturmak ve DB :: denildi gibi göçler hakkında
/**
* Boot method
* @return void
*/
public static function boot(){
parent::boot();
static::creating(function($eloquentModel){
if(isset($eloquentModel->latitude, $eloquentModel->longitude)){
$point = $eloquentModel->geoToPoint($eloquentModel->latitude, $eloquentModel->longitude);
$eloquentModel->setAttribute('location', DB::raw("GeomFromText('POINT(" . $point . ")')"));
}
});
static::updated(function($eloquentModel){
if(isset($eloquentModel->latitude, $eloquentModel->longitude)){
$point = $eloquentModel->geoToPoint($eloquentModel->latitude, $eloquentModel->longitude);
DB::statement("UPDATE " . $eloquentModel->getTable() . " SET location = GeomFromText('POINT(" . $point . ")') WHERE id = ". $eloquentModel->id);
}
});
}
: mekansal noktası alanının doğru değeri ayarlar.
Schema::create('locations', function($table){
$table->engine = "MYISAM";
$table->increments('id')->unsigned();
$table->decimal('latitude', 10, 8);
$table->decimal('longitude', 11, 8);
$table->timestamps();
});
/*Espatial Column*/
DB::statement('ALTER TABLE locations ADD location POINT NOT NULL');
/*Espatial index (MYISAM only)*/
DB::statement('ALTER TABLE locations ADD SPATIAL INDEX index_point(location)');
0
Size kullanabilir https://github.com/grimzy/laravel-mysql-spatial
kullanmak mevcuttur:
namespace App;
use Illuminate\Database\Eloquent\Model;
use Grimzy\LaravelMysqlSpatial\Eloquent\SpatialTrait;
/**
* @property \Grimzy\LaravelMysqlSpatial\Types\Point $location
*/
class Place extends Model
{
use SpatialTrait;
protected $fillable = [
'name',
];
protected $spatialFields = [
'location',
];
}
o zaman 'yeri' alanına sorgu çalıştırabilmek edebiliyoruz. mağaza modeline
aşağıdakileri kullanabilirsiniz:
$place1 = new Place();
$place1->name = 'Empire State Building';
$place1->location = new Point(40.7484404, -73.9878441);
$place1->save();
bir model almak için kullanmalısınız:
$place2 = Place::first();
$lat = $place2->location->getLat(); // 40.7484404
$lng = $place2->location->getLng(); // -73.9878441
İlgili konular
- 1. MySQL Mekansal lehçesi
- 2. jQuery veri kümeleri bundleconfig?
- 3. Metni dairesel olarak sayfa üzerinde taşıma
- 4. Mekansal Ajan Tabanlı Modelleme için Veri Yapısı
- 5. Highlandjs'deki dairesel veri akışı
- 6. PHP'de GIS mekansal işlevleri?
- 7. Java tabanlı büyük veri kümeleri verilen büyük veri kümeleri üzerinde Java
- 8. Köşeli veri kümeleri iç içe satırlar oluşturuluyor
- 9. Büyük veri kümeleri için do.call alternatifi
- 10. dönen veri kümeleri REST/WCF hizmeti
- 11. JQuery veri kümeleri: virgülle sıra numarası çalışmıyor
- 12. Hesaplanan sütun değerlerini veri kümeleri veri modeline bağla
- 13. Veri kümeleri arasındaki benzerlik yüzdesini hesaplamanın etkili yolu
- 14. MySQL veri
- 15. Moq ile eşitleme kümeleri
- 16. MongoDB mekansal endeksleri nasıl uygular?
- 17. C# 'ta pano içeriği değişikliklerini nasıl izlerim?
- 18. Veri kaynağı nasıl kapatılır mysql-bağlantı
- 19. Taşıma
- 20. Grafik.js için dinamik olarak veri kümeleri nasıl oluşturulur?
- 21. VMware perl sdk ile küme veri kümeleri nasıl alınır?
- 22. jQuery veri kümeleri içinde AngularJS gözlemcileri kullanmak için yaklaşım nedir
- 23. Pivot MySQL Veri
- 24. MySQL sorgusu doğru veri
- 25. MySQL Tetik yinelenen veri
- 26. Mysql veri yedek dizesi
- 27. Dairesel DLL bağımlılıkları .NET'te
- 28. MySQLdb, büyük sonuç kümeleri
- 29. (p) COMPSs kümeleri
- 30. yinelenen kümeleri r
Belki bu konuda yardım edebilirim: http://www.codetutorial.io/geo -spatial-mysql-laravel-5/ – haakym
@haakym tarafından sağlanan bağlantı çok yararlıdır. Laravel bu türleri doğal olarak desteklemez (https://github.com/laravel/framework/blob/5.1/src/Illuminate/Database/Schema/Blueprint.php adresine bakın) ancak her zaman DB: statement() geçişleriniz, hatta Blueprint sınıfını genişletti ve bu veri tiplerini desteklemek için kendi yöntemlerinizi ekleyin. Şahsen ben DB deyim yaklaşımını kullanıyorum. – jhmilan