2015-09-22 16 views
5

Sto cercando di memorizzare nella cache tutti i record della query per 60 minuti con il seguente metodo (Metodo 1)cache tutti i record da Query in laravel 5

Route::get('categoryList', function() { 
    return app\CategoryDetails::remember(60)->get(); 
}); 

Ho seguito questo tutorial link (Suggerimento 5: Cache Le query di database)

Ma sto ottenendo questo errore:

Call to undefined method Illuminate\Database\Query\Builder::remember()

non so che cosa mi manca qui.

BTW, so di poter memorizzare nella cache interi record con il seguente metodo (metodo 2):

Route::get('categoryList', function() {  
    $category = Cache::remember('category', 10, function() { 
     return \App\CategoryDetails::all(); 
    }); 

    return $category; 
}); 

e questo è perfettamente funzionante.

Sono curioso di sapere perché il primo metodo non funziona per me.

+0

Il primo metodo è stato utilizzato in Laravel 4, quest'ultimo è utilizzato in Laravel 5. –

risposta

8

Laravel 5 ha rimosso questa funzionalità. Ora avete a store the cache yourself:

Route::get('categoryList', function() { 
    return Cache::remember('category-details', 60, function() { 
     return App\CategoryDetails::all(); 
    }); 
}); 

Da the upgrade docs:

Eloquent no longer provides the remember method for caching queries. You now are responsible for caching your queries manually using the Cache::remember function.

+0

C'è qualche dove hanno documentato questo? solo curioso di sapere. –

+0

@MuhammedKhalander - Sì. L'ho aggiunto alla mia risposta. –

0

considerare l'utilizzo di una libreria query nella cache eloquente laravel chiamato rememberable

Si fa un buon lavoro.

Problemi correlati