2016-09-28 6 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(); 
    }); 

है। मैं बहुत की तरह कार्य करने के लिए $ हैश पास करने का प्रयास:

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

लेकिन फिर नीचे के रूप में एक और त्रुटि मिली:

App के लिए तर्क 1 लापता ImageController :: अनुप्रयोग \ http \ नियंत्रकों \ \ http \ नियंत्रकों {बंद}(), सी में कहा जाता है: \ XAMPP \ htdocs \ imagesharing \ विक्रेता \ laravel \ ढांचे \ src \ रोशन \ लाइन 316 पर कैश \ Repository.php और परिभाषित

मैं तर्क कैसे पारित करना मुझे ऐसा मेरी क्वेरी में इसका इस्तेमाल कर सकते हैं?

उत्तर

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

किया था, मैंने रीमेबर के बजाय हमेशा के लिए उपयोग करने का निर्णय लिया, और यह कैश :: हमेशा के लिए (' अंगूठे - '$ हैश, फ़ंक्शन() उपयोग ($ हैश) मुझे फ़ाइलस्टोर.एफ़पी लाइन 102 में अपवाद देता है:' क्लोजर 'का सीरियलाइजेशन की अनुमति नहीं है, क्या हमेशा के लिए बंद करने का उपयोग करना संभव नहीं है? –

संबंधित मुद्दे