laravel-spatial maintained by danhunsaker
Description
Spatial data types extension for Laravel.
Authors
Last update
2021/02/20 06:26
(dev-master)
License
Downloads
8 961
Laravel Spatial extension
This package is fully undocumented and unstable, and is a combination of the two great packages:
Installation
Installation made super-easy with composer:
composer require danhunsaker/laravel-spatial
Requirements
Works with PostgreSQL installed PostGIS extension and MySQL at least version 5.6.
If you try using it on a shared host which is not fulfilling those requirements, change your provider.
Usage
Migrations
Add spatial fields to your migrations the same way you would any others:
$table->point('point_column');
$table->linestring('line_string_column');
$table->polygon('polygon_column');
$table->geometry('geometry_column');
$table->multipoint('multi_point_column');
$table->multilinestring('multi_line_string_column');
$table->multipolygon('multi_polygon_column');
$table->geometrycollection('geometry_collection_column');
Models
Any models that use spatial fields need to use the LaravelSpatial\Eloquent\SpatialTrait, and list the spatial fields themselves in the $spatialFields property:
use LaravelSpatial\Eloquent\SpatialTrait;
// ...
class MyModel extends Model
{
use SpatialTrait;
// ...
protected $spatialFields = ['location'];
// ...
}
Values
We use the GeoJson PHP Library for describing spatial fields as GeoJSON object, e.g.:
use GeoJSON\Geometry\Point;
// ...
$eloquent = new MyModel();
$eloquent->location = new Point([49.7, 6.9]);
// ...
$eloquent->save();