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

Error in save or retrieve

Open apeivandi opened this issue 3 years ago • 1 comments

Hi My code was working fine and all of the sudden I'm getting a real strange error. (really all of the sudden! I didn't change a line of code! Only my mac got updated to latest version which I honestly don't see how that could be an issue!)

When I try to save or retrieve any entity that has a point data type in it I get this exception: PHP Fatal error: During inheritance of JsonSerializable: Uncaught ErrorException: Return type of Grimzy\LaravelMysqlSpatial\Types\Point::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /Users/amirpeivandi/Projects/nwrewards/vendor/grimzy/laravel-mysql-spatial/src/Types/Point.php:93

Any idea what this could be?

Amir

apeivandi avatar Dec 11 '21 22:12 apeivandi

I'm experiencing the same problem with PHP 8.1.2 and Laravel 8.65 and version 5.0.0 of this package.

If you are running PHP 8.1 and higher you can suppress this error by adding the attribute #[\ReturnTypeWillChange] before the jsonSerialize() method in .../vendor/grimzy/laravel-mysql-spatial/src/Types/Point.php. More about this new attribute here.

    /**
     * Convert to GeoJson Point that is jsonable to GeoJSON.
     *
     * @return \GeoJson\Geometry\Point
     */
    #[\ReturnTypeWillChange]
    public function jsonSerialize()
    {
        return new GeoJsonPoint([$this->getLng(), $this->getLat()]);
    }

bossrabbit avatar Feb 05 '22 17:02 bossrabbit