move near method into a scope
This commit is contained in:
parent
451437ed6a
commit
db9f3508ac
3 changed files with 5 additions and 3 deletions
|
@ -6,6 +6,7 @@ use Ramsey\Uuid\Uuid;
|
||||||
use App\{Media, Note, Place};
|
use App\{Media, Note, Place};
|
||||||
use Illuminate\Http\{Request, Response};
|
use Illuminate\Http\{Request, Response};
|
||||||
use App\Exceptions\InvalidTokenException;
|
use App\Exceptions\InvalidTokenException;
|
||||||
|
use Phaza\LaravelPostgis\Geometries\Point;
|
||||||
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
|
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
|
||||||
use App\Services\{NoteService, PlaceService, TokenService};
|
use App\Services\{NoteService, PlaceService, TokenService};
|
||||||
|
|
||||||
|
@ -313,7 +314,7 @@ class MicropubController extends Controller
|
||||||
$matches
|
$matches
|
||||||
);
|
);
|
||||||
$distance = (count($matches[0]) == 3) ? 100 * $matches[0][2] : 1000;
|
$distance = (count($matches[0]) == 3) ? 100 * $matches[0][2] : 1000;
|
||||||
$places = Place::near($matches[0][0], $matches[0][1], $distance);
|
$places = Place::near(new Point($matches[0][0], $matches[0][1]))->get();
|
||||||
foreach ($places as $place) {
|
foreach ($places as $place) {
|
||||||
$place->uri = config('app.url') . '/places/' . $place->slug;
|
$place->uri = config('app.url') . '/places/' . $place->slug;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ class Place extends Model
|
||||||
* @param int Distance
|
* @param int Distance
|
||||||
* @return \Illuminate\Database\Eloquent\Builder
|
* @return \Illuminate\Database\Eloquent\Builder
|
||||||
*/
|
*/
|
||||||
public function scopeNear(Builder $query, Point $point, $distance = 100)
|
public function scopeNear(Builder $query, Point $point, $distance = 1000)
|
||||||
{
|
{
|
||||||
$field = DB::raw(
|
$field = DB::raw(
|
||||||
sprintf("ST_Distance(%s.location, ST_GeogFromText('%s'))",
|
sprintf("ST_Distance(%s.location, ST_GeogFromText('%s'))",
|
||||||
|
|
|
@ -4,6 +4,7 @@ namespace Tests\Unit;
|
||||||
|
|
||||||
use App\Place;
|
use App\Place;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
use Phaza\LaravelPostgis\Geometries\Point;
|
||||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||||
|
|
||||||
|
@ -16,7 +17,7 @@ class PlacesTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function test_near_method()
|
public function test_near_method()
|
||||||
{
|
{
|
||||||
$nearby = Place::near(53.5, -2.38, 1000);
|
$nearby = Place::near(new Point(53.5, -2.38), 1000)->get();
|
||||||
$this->assertEquals('the-bridgewater-pub', $nearby[0]->slug);
|
$this->assertEquals('the-bridgewater-pub', $nearby[0]->slug);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue