salvaworld/laravel-spatial

Spatial data types extension for Laravel.

v1.0.4 2024-09-12 10:56 UTC

This package is auto-updated.

Last update: 2024-11-12 11:23:15 UTC


README

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 salvaworld/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();