Skip to content

Laravel10 migration #205

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ Please check the documentation for your MySQL version. MySQL's Extension for Spa
- `1.x.x`: MySQL 5.6 (also supports MySQL 5.5 but not all spatial analysis functions)
- `2.x.x`: MySQL 5.7 and 8.0 (Laravel version < 8.0)
- `3.x.x`: MySQL 8.0 with SRID support (Laravel version < 8.0)
- **`4.x.x`: MySQL 8.0 with SRID support (Laravel 8+) [Current branch]**
- **`4.x.x`: MySQL 8.0 with SRID support (Laravel 8.x, 9.x) [Current branch]**
- `5.x.x`: MySQL 5.7 and 8.0 (Laravel 8+)
- `6.x.x`: MySQL 8.0 with SRID support (Laravel 10+)

This package also works with MariaDB. Please refer to the [MySQL/MariaDB Spatial Support Matrix](https://mariadb.com/kb/en/library/mysqlmariadb-spatial-support-matrix/) for compatibility.

Expand All @@ -27,6 +28,9 @@ Add the package using composer:
```sh
$ composer require grimzy/laravel-mysql-spatial:^4.0

# for Laravel version 10.x
$ composer require grimzy/laravel-mysql-spatial:^6.0

# or for Laravel version < 8.0
$ composer require grimzy/laravel-mysql-spatial:^3.0
```
Expand Down
16 changes: 8 additions & 8 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,19 @@
}
],
"require": {
"php": ">=7.3",
"php": "^8.1",
"ext-pdo": "*",
"ext-json": "*",
"illuminate/database": "^8.0",
"illuminate/database": "^10.2",
"geo-io/wkb-parser": "^1.0",
"jmikola/geojson": "^1.0"
},
"require-dev": {
"phpunit/phpunit": "~6.5",
"laravel/laravel": "^8.0",
"doctrine/dbal": "^2.5",
"laravel/browser-kit-testing": "^2.0",
"mockery/mockery": "^1.3"
"laravel/laravel": "^10.0",
"doctrine/dbal": "^3.4",
"phpunit/phpunit": "^10.0",
"laravel/browser-kit-testing": "^7.0",
"mockery/mockery": "^1.5"
},
"autoload": {
"psr-4": {
Expand All @@ -42,7 +42,7 @@
},
"extra": {
"branch-alias": {
"dev-master": "4.0.x-dev"
"dev-master": "6.0.x-dev"
},
"laravel": {
"providers": [
Expand Down
10 changes: 6 additions & 4 deletions src/Connectors/ConnectionFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,21 @@
namespace Grimzy\LaravelMysqlSpatial\Connectors;

use Grimzy\LaravelMysqlSpatial\MysqlConnection;
use Illuminate\Contracts\Container\BindingResolutionException;
use Illuminate\Database\Connectors\ConnectionFactory as IlluminateConnectionFactory;
use PDO;

class ConnectionFactory extends IlluminateConnectionFactory
{
/**
* @param string $driver
* @param string $driver
* @param \Closure|PDO $connection
* @param string $database
* @param string $prefix
* @param array $config
* @param string $database
* @param string $prefix
* @param array $config
*
* @return \Illuminate\Database\ConnectionInterface
* @throws BindingResolutionException
*/
protected function createConnection($driver, $connection, $database, $prefix = '', array $config = [])
{
Expand Down
4 changes: 2 additions & 2 deletions src/Doctrine/Geometry.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ class Geometry extends Type
{
const GEOMETRY = 'geometry';

public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
{
return 'geometry';
}

public function getName()
public function getName(): string
{
return self::GEOMETRY;
}
Expand Down
4 changes: 2 additions & 2 deletions src/Doctrine/GeometryCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ class GeometryCollection extends Type
{
const GEOMETRYCOLLECTION = 'geometrycollection';

public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
{
return 'geometrycollection';
}

public function getName()
public function getName(): string
{
return self::GEOMETRYCOLLECTION;
}
Expand Down
4 changes: 2 additions & 2 deletions src/Doctrine/LineString.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ class LineString extends Type
{
const LINESTRING = 'linestring';

public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
{
return 'linestring';
}

public function getName()
public function getName(): string
{
return self::LINESTRING;
}
Expand Down
4 changes: 2 additions & 2 deletions src/Doctrine/MultiLineString.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ class MultiLineString extends Type
{
const MULTILINESTRING = 'multilinestring';

public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
{
return 'multilinestring';
}

public function getName()
public function getName(): string
{
return self::MULTILINESTRING;
}
Expand Down
4 changes: 2 additions & 2 deletions src/Doctrine/MultiPoint.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ class MultiPoint extends Type
{
const MULTIPOINT = 'multipoint';

public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
{
return 'multipoint';
}

public function getName()
public function getName(): string
{
return self::MULTIPOINT;
}
Expand Down
4 changes: 2 additions & 2 deletions src/Doctrine/MultiPolygon.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ class MultiPolygon extends Type
{
const MULTIPOLYGON = 'multipolygon';

public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
{
return 'multipolygon';
}

public function getName()
public function getName(): string
{
return self::MULTIPOLYGON;
}
Expand Down
4 changes: 2 additions & 2 deletions src/Doctrine/Point.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ class Point extends Type
{
const POINT = 'point';

public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
{
return 'point';
}

public function getName()
public function getName(): string
{
return self::POINT;
}
Expand Down
4 changes: 2 additions & 2 deletions src/Doctrine/Polygon.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ class Polygon extends Type
{
const POLYGON = 'polygon';

public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string
{
return 'polygon';
}

public function getName()
public function getName(): string
{
return self::POLYGON;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Eloquent/Builder.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public function update(array $values)
return parent::update($values);
}

protected function asWKT(GeometryInterface $geometry)
protected function asWKT(GeometryInterface $geometry): SpatialExpression
{
return new SpatialExpression($geometry);
}
Expand Down
2 changes: 1 addition & 1 deletion src/Eloquent/SpatialExpression.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

class SpatialExpression extends Expression
{
public function getValue()
public function getValue($expression)
{
return "ST_GeomFromText(?, ?, 'axis-order=long-lat')";
}
Expand Down
19 changes: 10 additions & 9 deletions src/Eloquent/SpatialTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use Grimzy\LaravelMysqlSpatial\Types\Geometry;
use Grimzy\LaravelMysqlSpatial\Types\GeometryInterface;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use JetBrains\PhpStorm\Pure;

/**
* Trait SpatialTrait.
Expand Down Expand Up @@ -40,9 +41,9 @@ trait SpatialTrait
* protected $spatialFields = [];
*/

public $geometries = [];
public array $geometries = [];

protected $stRelations = [
protected array $stRelations = [
'within',
'crosses',
'contains',
Expand All @@ -53,7 +54,7 @@ trait SpatialTrait
'touches',
];

protected $stOrderFunctions = [
protected array $stOrderFunctions = [
'distance',
'distance_sphere',
];
Expand All @@ -65,12 +66,12 @@ trait SpatialTrait
*
* @return \Grimzy\LaravelMysqlSpatial\Eloquent\Builder
*/
public function newEloquentBuilder($query)
#[Pure] public function newEloquentBuilder($query): Builder
{
return new Builder($query);
}

protected function newBaseQueryBuilder()
protected function newBaseQueryBuilder(): BaseBuilder
{
$connection = $this->getConnection();

Expand All @@ -81,7 +82,7 @@ protected function newBaseQueryBuilder()
);
}

protected function performInsert(EloquentBuilder $query, array $options = [])
protected function performInsert(EloquentBuilder $query, array $options = []): bool
{
foreach ($this->attributes as $key => $value) {
if ($value instanceof GeometryInterface) {
Expand Down Expand Up @@ -121,7 +122,7 @@ public function getSpatialFields()
}
}

public function isColumnAllowed($geometryColumn)
public function isColumnAllowed($geometryColumn): bool
{
if (!in_array($geometryColumn, $this->getSpatialFields())) {
throw new SpatialFieldsNotDefinedException();
Expand Down Expand Up @@ -157,7 +158,7 @@ public function scopeDistanceExcludingSelf($query, $geometryColumn, $geometry, $
return $query;
}

public function scopeDistanceValue($query, $geometryColumn, $geometry)
public function scopeDistanceValue($query, $geometryColumn, $geometry): void
{
$this->isColumnAllowed($geometryColumn);

Expand Down Expand Up @@ -200,7 +201,7 @@ public function scopeDistanceSphereExcludingSelf($query, $geometryColumn, $geome
return $query;
}

public function scopeDistanceSphereValue($query, $geometryColumn, $geometry)
public function scopeDistanceSphereValue($query, $geometryColumn, $geometry): void
{
$this->isColumnAllowed($geometryColumn);

Expand Down
25 changes: 20 additions & 5 deletions src/MysqlConnection.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,29 @@

namespace Grimzy\LaravelMysqlSpatial;

use Doctrine\DBAL\Exception;
use Doctrine\DBAL\Types\Type as DoctrineType;
use Grimzy\LaravelMysqlSpatial\Schema\Builder;
use Grimzy\LaravelMysqlSpatial\Schema\Grammars\MySqlGrammar;
use Illuminate\Database\Grammar;
use Illuminate\Database\MySqlConnection as IlluminateMySqlConnection;
use Illuminate\Database\Schema\MySqlBuilder;

class MysqlConnection extends IlluminateMySqlConnection
{
public function __construct($pdo, $database = '', $tablePrefix = '', array $config = [])
/**
* @param $pdo
* @param string $database
* @param string $tablePrefix
* @param array $config
* @throws Exception
*/
public function __construct(
$pdo,
string $database = '',
string $tablePrefix = '',
array $config = []
)
{
parent::__construct($pdo, $database, $tablePrefix, $config);

Expand All @@ -36,19 +51,19 @@ public function __construct($pdo, $database = '', $tablePrefix = '', array $conf
/**
* Get the default schema grammar instance.
*
* @return \Illuminate\Database\Grammar
* @return Grammar
*/
protected function getDefaultSchemaGrammar()
protected function getDefaultSchemaGrammar(): Grammar
{
return $this->withTablePrefix(new MySqlGrammar());
}

/**
* Get a schema builder instance for the connection.
*
* @return \Illuminate\Database\Schema\MySqlBuilder
* @return MySqlBuilder
*/
public function getSchemaBuilder()
public function getSchemaBuilder(): MySqlBuilder|Builder
{
if (is_null($this->schemaGrammar)) {
$this->useDefaultSchemaGrammar();
Expand Down
Loading