Closed
Description
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": "->"
}
]
}