I think you need PHP's use clause, like :
Cache::remember('thumb-'.$hash, 15, function() use ($hash) {
$image = Image::where('hash', $hash)->first();
});
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
Laravel docs give this example:
$value = Cache::remember('users', $minutes, function() {
return DB::table('users')->get();
});
In my case I have
public function thumb($hash, $extension)
{
Cache::remember('thumb-'.$hash, 15, function() {
$image = Image::where('hash', $hash)->first();
});
If I run that I get ErrorException in ImageController.php line 69: Undefined variable: hash. I tried to pass $hash to function like so:
Cache::remember('thumb-'.$hash, 15, function($hash)
but then got another error:
Missing argument 1 for App\Http\Controllers\ImageController::App\Http\Controllers{closure}(), called in C:\xampp\htdocs\imagesharing\vendor\laravel\framework\src\Illuminate\Cache\Repository.php on line 316 and defined
How do I pass argument so I can use it in my query?
I think you need PHP's use clause, like :
Cache::remember('thumb-'.$hash, 15, function() use ($hash) {
$image = Image::where('hash', $hash)->first();
});
Please or to participate in this conversation.