mikebronner / laravel-model-caching

Eloquent model-caching made easy.
MIT License
2.26k stars 217 forks source link

Lumen paginate error #198

Closed maicolbruski closed 5 years ago

maicolbruski commented 5 years ago

Describe the bug Hi, I try use a your package in my api with LUMEN 5.7, but when i get with paginate return a error (image). Get a single register works perfectly.

It`s possible cache paginate in Lumen 5.7?

Tks.

Eloquent Query

$model->paginate(25);

Stack Trace (1/1) Error Call to undefined function GeneaLabs\LaravelModelCaching\request()

Environment

Additional context captura de tela 2018-12-07 as 18 01 49

mikebronner commented 5 years ago

@maicolbruski At this time I don't guarantee support for Lumen because I don't have a way of testing it. However, I will try to look into it, but to do that, I would need the complete stack trace. Could you post that here? Thanks!

maicolbruski commented 5 years ago
[2018-12-07 20:57:34] local.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined function GeneaLabs\LaravelModelCaching\request() in /www/lumen/cache/vendor/genealabs/laravel-model-caching/src/CachedBuilder.php:137
Stack trace:
#0 /www/lumen/cache/vendor/illuminate/support/Traits/ForwardsCalls.php(23): GeneaLabs\LaravelModelCaching\CachedBuilder->paginate(25)
#1 /www/lumen/cache/vendor/illuminate/database/Eloquent/Model.php(1608): Illuminate\Database\Eloquent\Model->forwardCallTo(Object(GeneaLabs\LaravelModelCaching\CachedBuilder), 'paginate', Array)
#2 /www/lumen/cache/vendor/illuminate/database/Eloquent/Model.php(1620): Illuminate\Database\Eloquent\Model->__call('paginate', Array)
#3 /www/lumen/cache/app/Http/Controllers/BrandController.php(21): Illuminate\Database\Eloquent\Model::__callStatic('paginate', Array)
#4 [internal function]: App\Http\Controllers\BrandController->index()
#5 /www/lumen/cache/vendor/illuminate/container/BoundMethod.php(29): call_user_func_array(Array, Array)
#6 /www/lumen/cache/vendor/illuminate/container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#7 /www/lumen/cache/vendor/illuminate/container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Laravel\Lumen\Application), Array, Object(Closure))
#8 /www/lumen/cache/vendor/illuminate/container/Container.php(572): Illuminate\Container\BoundMethod::call(Object(Laravel\Lumen\Application), Array, Array, NULL)
#9 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(376): Illuminate\Container\Container->call(Array, Array)
#10 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(342): Laravel\Lumen\Application->callControllerCallable(Array, Array)
#11 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(316): Laravel\Lumen\Application->callLumenController(Object(App\Http\Controllers\BrandController), 'index', Array)
#12 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(278): Laravel\Lumen\Application->callControllerAction(Array)
#13 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(263): Laravel\Lumen\Application->callActionOnArrayBasedRoute(Array)
#14 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(163): Laravel\Lumen\Application->handleFoundRoute(Array)
#15 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(416): Laravel\Lumen\Application->Laravel\Lumen\Concerns\{closure}()
#16 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(169): Laravel\Lumen\Application->sendThroughPipeline(Array, Object(Closure))
#17 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(108): Laravel\Lumen\Application->dispatch(NULL)
#18 /www/lumen/cache/public/index.php(28): Laravel\Lumen\Application->run()
#19 {main} {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Call to undefined function GeneaLabs\\LaravelModelCaching\
equest() at /www/lumen/cache/vendor/genealabs/laravel-model-caching/src/CachedBuilder.php:137)
[stacktrace]
#0 /www/lumen/cache/vendor/illuminate/support/Traits/ForwardsCalls.php(23): GeneaLabs\\LaravelModelCaching\\CachedBuilder->paginate(25)
#1 /www/lumen/cache/vendor/illuminate/database/Eloquent/Model.php(1608): Illuminate\\Database\\Eloquent\\Model->forwardCallTo(Object(GeneaLabs\\LaravelModelCaching\\CachedBuilder), 'paginate', Array)
#2 /www/lumen/cache/vendor/illuminate/database/Eloquent/Model.php(1620): Illuminate\\Database\\Eloquent\\Model->__call('paginate', Array)
#3 /www/lumen/cache/app/Http/Controllers/BrandController.php(21): Illuminate\\Database\\Eloquent\\Model::__callStatic('paginate', Array)
#4 [internal function]: App\\Http\\Controllers\\BrandController->index()
#5 /www/lumen/cache/vendor/illuminate/container/BoundMethod.php(29): call_user_func_array(Array, Array)
#6 /www/lumen/cache/vendor/illuminate/container/BoundMethod.php(87): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#7 /www/lumen/cache/vendor/illuminate/container/BoundMethod.php(31): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Laravel\\Lumen\\Application), Array, Object(Closure))
#8 /www/lumen/cache/vendor/illuminate/container/Container.php(572): Illuminate\\Container\\BoundMethod::call(Object(Laravel\\Lumen\\Application), Array, Array, NULL)
#9 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(376): Illuminate\\Container\\Container->call(Array, Array)
#10 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(342): Laravel\\Lumen\\Application->callControllerCallable(Array, Array)
#11 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(316): Laravel\\Lumen\\Application->callLumenController(Object(App\\Http\\Controllers\\BrandController), 'index', Array)
#12 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(278): Laravel\\Lumen\\Application->callControllerAction(Array)
#13 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(263): Laravel\\Lumen\\Application->callActionOnArrayBasedRoute(Array)
#14 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(163): Laravel\\Lumen\\Application->handleFoundRoute(Array)
#15 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(416): Laravel\\Lumen\\Application->Laravel\\Lumen\\Concerns\\{closure}()
#16 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(169): Laravel\\Lumen\\Application->sendThroughPipeline(Array, Object(Closure))
#17 /www/lumen/cache/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(108): Laravel\\Lumen\\Application->dispatch(NULL)
#18 /www/lumen/cache/public/index.php(28): Laravel\\Lumen\\Application->run()
#19 {main}
"} 
mikebronner commented 5 years ago

If you look at the stack trace, this is because Lumen doesn't have the request() helper function. You could copy/paste this over from the Laravel helpers file and into the Lumen helpers file (if there is one, or create one if there isn't).

mikebronner commented 5 years ago

Closing this for now, as I don't have any proper way to write tests for Lumen for this. However, if you would like to submit a PR that fixes any Lumen issues, I would be happy to review them.

PokeGuys commented 5 years ago

Just like PR #156. Lumen don't have request() helper function. It needs to use app('request') as replacement.