Skip to content

Undefined index: operator #69

Closed
Closed
@richdynamix

Description

@richdynamix

Issue

For several of my custom local scoped queries across a number of different models I am getting Undefined index: operator error. When I add disableCache() to the queries the page works again. However, these queries could really be doing with the use of cache.

The query being run at the time of error in the below stack trace is this -

    public function scopeBrandLinksForRange($query, int $brandId, string $range): int
    {
        $fromDate = Carbon::parse(explode(',', $range)[0]);
        $tillDate = Carbon::parse(explode(',', $range)[1]);

        return $query->whereBetween('created_at', [$fromDate, $tillDate])
            ->where('brand_id', $brandId)
            ->count();
    }

Environment

Laravel Version: 5.5.34
Laravel Model Caching Package Version: 0.2.22
PHP Version: 7.1.11-1+ubuntu16.04.1+deb.sury.org+1
Homestead Version: N/A (Docker Development)
Operating System & Version: Ubuntu 16:04

Stack Trace

{
    "message": "Undefined index: operator",
    "exception": "ErrorException",
    "file": "/app/vendor/genealabs/laravel-model-caching/src/CacheKey.php",
    "line": 95,
    "trace": [
        {
            "file": "/app/vendor/genealabs/laravel-model-caching/src/CacheKey.php",
            "line": 95,
            "function": "handleError",
            "class": "Illuminate\\Foundation\\Bootstrap\\HandleExceptions",
            "type": "->"
        },
        {
            "file": "/app/vendor/genealabs/laravel-model-caching/src/CacheKey.php",
            "line": 154,
            "function": "getTypeClause",
            "class": "GeneaLabs\\LaravelModelCaching\\CacheKey",
            "type": "->"
        },
        {
            "file": "/app/vendor/genealabs/laravel-model-caching/src/CacheKey.php",
            "line": 114,
            "function": "getOtherClauses",
            "class": "GeneaLabs\\LaravelModelCaching\\CacheKey",
            "type": "->"
        },
        {
            "function": "GeneaLabs\\LaravelModelCaching\\{closure}",
            "class": "GeneaLabs\\LaravelModelCaching\\CacheKey",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Support/Collection.php",
            "line": 1228,
            "function": "array_reduce"
        },
        {
            "file": "/app/vendor/genealabs/laravel-model-caching/src/CacheKey.php",
            "line": 117,
            "function": "reduce",
            "class": "Illuminate\\Support\\Collection",
            "type": "->"
        },
        {
            "file": "/app/vendor/genealabs/laravel-model-caching/src/CacheKey.php",
            "line": 28,
            "function": "getWhereClauses",
            "class": "GeneaLabs\\LaravelModelCaching\\CacheKey",
            "type": "->"
        },
        {
            "file": "/app/vendor/genealabs/laravel-model-caching/src/Traits/Cachable.php",
            "line": 55,
            "function": "make",
            "class": "GeneaLabs\\LaravelModelCaching\\CacheKey",
            "type": "->"
        },
        {
            "file": "/app/vendor/genealabs/laravel-model-caching/src/CachedBuilder.php",
            "line": 36,
            "function": "makeCacheKey",
            "class": "GeneaLabs\\LaravelModelCaching\\CachedBuilder",
            "type": "->"
        },
        {
            "file": "/app/app/Links/Models/Link.php",
            "line": 236,
            "function": "count",
            "class": "GeneaLabs\\LaravelModelCaching\\CachedBuilder",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php",
            "line": 953,
            "function": "scopeBrandLinksForRange",
            "class": "AdNews\\Links\\Models\\Link",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php",
            "line": 1277,
            "function": "callScope",
            "class": "Illuminate\\Database\\Eloquent\\Builder",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php",
            "line": 1470,
            "function": "__call",
            "class": "Illuminate\\Database\\Eloquent\\Builder",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php",
            "line": 1482,
            "function": "__call",
            "class": "Illuminate\\Database\\Eloquent\\Model",
            "type": "->"
        },
        {
            "file": "/app/app/Http/Controllers/Api/Analytics/LinksController.php",
            "line": 30,
            "function": "__callStatic",
            "class": "Illuminate\\Database\\Eloquent\\Model",
            "type": "::"
        },
        {
            "function": "getTotalBrandLinks",
            "class": "AdNews\\Http\\Controllers\\Api\\Analytics\\LinksController",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
            "line": 54,
            "function": "call_user_func_array"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
            "line": 45,
            "function": "callAction",
            "class": "Illuminate\\Routing\\Controller",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 212,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\ControllerDispatcher",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
            "line": 169,
            "function": "runController",
            "class": "Illuminate\\Routing\\Route",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 658,
            "function": "run",
            "class": "Illuminate\\Routing\\Route",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 30,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
            "line": 41,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php",
            "line": 43,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Auth\\Middleware\\Authenticate",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
            "line": 57,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 102,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 660,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 635,
            "function": "runRouteWithinStack",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 601,
            "function": "runRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 590,
            "function": "dispatchToRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 176,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 30,
            "function": "Illuminate\\Foundation\\Http\\{closure}",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php",
            "line": 46,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/itsgoingd/clockwork/Clockwork/Support/Laravel/ClockworkMiddleware.php",
            "line": 28,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 149,
            "function": "handle",
            "class": "Clockwork\\Support\\Laravel\\ClockworkMiddleware",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
            "line": 53,
            "function": "Illuminate\\Pipeline\\{closure}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 102,
            "function": "Illuminate\\Routing\\{closure}",
            "class": "Illuminate\\Routing\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 151,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 116,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/app/public/index.php",
            "line": 55,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        }
    ]
}

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions