2016-09-28 9 views
5

Laravelのドキュメントは、この例を与える:私の場合は::機能を覚えて

$value = Cache::remember('users', $minutes, function() { 
    return DB::table('users')->get(); 
}); 

私はErrorException in ImageController.php line 69: Undefined variable: hashを得ることを実行した場合、私は

public function thumb($hash, $extension) 
{ 
    Cache::remember('thumb-'.$hash, 15, function() { 
     $image = Image::where('hash', $hash)->first(); 
    }); 

を持っています。

\のHttp \コントローラ\ ImageController ::のApp \のHttpコントローラ\ Appの引数1がありません:以下のように別のエラーを得た後、

Cache::remember('thumb-'.$hash, 15, function($hash) 

をしかし:私はそうのように機能するために$ハッシュを渡そうとしましたCで呼び出さ{閉鎖}()、:\ xamppの\ htdocsに\ imagesharing \ベンダー\ laravelの\枠組み\ SRC \を照らし\キャッシュ\ Repository.phpライン316上と

を定義してどのように私は私ので、引数を渡すん私のクエリでそれを使用できますか?

答えて

12

useを使用して渡す必要があります。

Cache::remember('thumb-'.$hash, 15, function() use ($hash) { 
    $image = Image::where('hash', $hash)->first(); 
}); 
+1

もう少し詳しく説明します - これはラーバルの問題ではありません。これはPHPでクロージャ/匿名関数がどのように機能するかです。 [PHPドキュメント](http://php.net/manual/en/functions.anonymous.php) –

+0

おかげで、そのトリックは –

+0

私は永遠にremeberの代わりに使うことにしました。このCache :: forever( ' ($ hash)はFileStore.phpで例外を与えています。102: 'Closure'のシリアライゼーションは許可されていません。クローズを永遠に使うことはできませんか? –

関連する問題