Query Builder

This section will go over how to use the spatial features added to Laravel's query builder.

EloquentQueryBuilder::selectDistance()

The selectDistance method allows you to select the calculated distance from a provided point. The returned value is in degrees.

Returns: \Anomaly\Streams\Platform\Model\EloquentQueryBuilder
Arguments
Key Required Type Default Description

$field

true

string

none

The geocoder field slug you would like to select distance for.

$point

true

mixed

none

An address, lat/lng array, or Point instance.

$formatted

false

bool

false

A flag to use the formatted point instead of the adjusted marker point.

$as

false

string

{$field}_distance

An optional name for the selected distance.

Example
use Anomaly\Streams\Platform\Support\Length;

$locations = LocationModel::selectDistance('address', 'Davenport, IA')->get();

foreach ($locations as $location) {
    echo (new Length($location->address_distance, 'deg'))->miles();
}

$closest = LocationModel::selectDistance('address', 'Davenport, IA')->orderBy('address_distance', 'ASC')->first();
Twig
{% set locations = entries('example', 'locations').selectDistance('address', 'Davenport, IA').get() %}

{% for location in locations %}
	{{ length(location.address_distance, 'deg').miles }}
{% endfor %}

{% set closest = entries('example', 'locations').selectDistance('address', 'Davenport, IA').orderBy('address_distance', 'ASC').first() %}

EloquentQueryBuilder::whereDistance()

The whereDistance method lets you add where restrictions based on distance.

Returns: \Anomaly\Streams\Platform\Model\EloquentQueryBuilder
Arguments
Key Required Type Default Description

$field

true

string

none

The geocoder field slug you would like to select distance for.

$point

true

mixed

none

An address, lat/lng array, or Point instance.

$operator

true

string

none

A valid where operator (<=, >=, etc).

$distance

true

mixed

none

The distance to use in the comparison. Can be interger or decimal.

$formatted

false

bool

false

A flag to use the formatted point instead of the adjusted marker point.

Example
$nearby = LocationModel::whereDistance('address', 'Davenport, IA', '15 mi')->get();
Twig
{% set nearby = entries('example', 'locations').whereDistance('address', 'Davenport, IA', '15 mi').get() %}

EloquentQueryBuilder::orWhereDistance()

The orWhereDistance distance is the same as the above method but uses an OR WHERE condition instead.