laravel-mysql-spatial icon indicating copy to clipboard operation
laravel-mysql-spatial copied to clipboard

Use Eloquent builder methods instead of scopes

Open MatanYadaev opened this issue 4 years ago • 1 comments

This PR moves the whole scopes to a dedicated builder (which already exists).

This approach presented introduced in the "Dedicated query builders for Eloquent models" blogpost.

@grimzy What do you think about this approach? Do you notice any drawbacks?

Personally, in my own company, we're using only dedicated model builders and there's a lot of benefit from it. I thought it could be great to have real IDE autocomplete for spatial methods:

namespace App\Builders;

use Grimzy\LaravelMysqlSpatial\Eloquent\Builder as SpatialBuilder;
use Grimzy\LaravelMysqlSpatial\Types\Point;

class UserBuilder extends SpatialBuilder
{
    public function inRange(Point $point, int $radius)
    {
        $this->distanceSphereValue('location', $point)->having('distance', '<', $radius);

        return $this;
    }
}

MatanYadaev avatar Nov 05 '20 09:11 MatanYadaev

@grimzy WDYT?

MatanYadaev avatar Dec 27 '20 14:12 MatanYadaev