diff --git a/src/Traits/HasSpatial.php b/src/Traits/HasSpatial.php index 1b94553..8d1dff2 100644 --- a/src/Traits/HasSpatial.php +++ b/src/Traits/HasSpatial.php @@ -15,7 +15,7 @@ trait HasSpatial public function scopeSelectDistanceTo(Builder $query, string $column, Point $point): void { if (is_null($query->getQuery()->columns)) { - $query->select('*'); + $query->select("{$this->getTable()}.*"); } match (DB::connection()->getDriverName()) { @@ -59,7 +59,7 @@ public function newQuery(): Builder $raw = substr($raw, 0, -2); - return parent::newQuery()->addSelect('*', DB::raw($raw)); + return parent::newQuery()->addSelect("{$this->getTable()}.*", DB::raw($raw)); } public function getLocationCastedAttributes(): Collection diff --git a/tests/HasSpatialTest.php b/tests/HasSpatialTest.php index e6c1f92..8849fb5 100644 --- a/tests/HasSpatialTest.php +++ b/tests/HasSpatialTest.php @@ -19,7 +19,7 @@ public function it_generates_sql_query_for_selectDistanceTo_scope(): void // Assert $this->assertEquals( - expected: "select *, CONCAT(ST_AsText(addresses.$castedAttr, 'axis-order=long-lat'), ',', ST_SRID(addresses.$castedAttr)) as $castedAttr, ST_Distance(ST_SRID($castedAttr, ?), ST_SRID(Point(?, ?), ?)) as distance from `addresses`", + expected: "select `addresses`.*, CONCAT(ST_AsText(addresses.$castedAttr, 'axis-order=long-lat'), ',', ST_SRID(addresses.$castedAttr)) as $castedAttr, ST_Distance(ST_SRID($castedAttr, ?), ST_SRID(Point(?, ?), ?)) as distance from `addresses`", actual: $query->toSql() ); } @@ -36,7 +36,7 @@ public function it_generates_sql_query_for_withinDistanceTo_scope(): void // 3. Assert $this->assertEquals( - expected: "select *, CONCAT(ST_AsText(addresses.$castedAttr, 'axis-order=long-lat'), ',', ST_SRID(addresses.$castedAttr)) as $castedAttr from `addresses` where ST_AsText(location) != ? and ST_Distance(ST_SRID($castedAttr, ?), ST_SRID(Point(?, ?), ?)) <= ?", + expected: "select `addresses`.*, CONCAT(ST_AsText(addresses.$castedAttr, 'axis-order=long-lat'), ',', ST_SRID(addresses.$castedAttr)) as $castedAttr from `addresses` where ST_AsText(location) != ? and ST_Distance(ST_SRID($castedAttr, ?), ST_SRID(Point(?, ?), ?)) <= ?", actual: $query->toSql() ); } @@ -54,12 +54,12 @@ public function it_generates_sql_query_for_orderByDistanceTo_scope(): void // 3. Assert $this->assertEquals( - expected: "select *, CONCAT(ST_AsText(addresses.$castedAttr, 'axis-order=long-lat'), ',', ST_SRID(addresses.$castedAttr)) as $castedAttr from `addresses` order by ST_Distance(ST_SRID($castedAttr, ?), ST_SRID(Point(?, ?), ?)) asc", + expected: "select `addresses`.*, CONCAT(ST_AsText(addresses.$castedAttr, 'axis-order=long-lat'), ',', ST_SRID(addresses.$castedAttr)) as $castedAttr from `addresses` order by ST_Distance(ST_SRID($castedAttr, ?), ST_SRID(Point(?, ?), ?)) asc", actual: $queryForAsc->toSql() ); $this->assertEquals( - expected: "select *, CONCAT(ST_AsText(addresses.$castedAttr, 'axis-order=long-lat'), ',', ST_SRID(addresses.$castedAttr)) as $castedAttr from `addresses` order by ST_Distance(ST_SRID($castedAttr, ?), ST_SRID(Point(?, ?), ?)) desc", + expected: "select `addresses`.*, CONCAT(ST_AsText(addresses.$castedAttr, 'axis-order=long-lat'), ',', ST_SRID(addresses.$castedAttr)) as $castedAttr from `addresses` order by ST_Distance(ST_SRID($castedAttr, ?), ST_SRID(Point(?, ?), ?)) desc", actual: $queryForDesc->toSql() ); } @@ -73,7 +73,7 @@ public function it_generates_sql_query_for_location_casted_attributes(): void // 2. Act & Assert $this->assertEquals( - expected: "select *, CONCAT(ST_AsText(addresses.$castedAttr, 'axis-order=long-lat'), ',', ST_SRID(addresses.$castedAttr)) as $castedAttr from `addresses`", + expected: "select `addresses`.*, CONCAT(ST_AsText(addresses.$castedAttr, 'axis-order=long-lat'), ',', ST_SRID(addresses.$castedAttr)) as $castedAttr from `addresses`", actual: $address->query()->toSql() ); }