2015-09-22 11 views
5

Ich versuche, alle Datensätze der Abfrage für 60 Minuten nach dem folgenden Verfahren (Verfahren 1)Cache alle Datensätze aus Abfrage in Laravel 5

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

ich dieses Tutorial gefolgt link (Tipp 5 zwischenzuspeichern: Cache Datenbankabfragen)

Aber ich bin immer diese Fehlermeldung:

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

ich weiß nicht, was ich hier fehlt.

BTW, ich weiß, ich kann mit dem folgenden Verfahren (Methode 2) ganze Datensätze gespeichert werden:

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

    return $category; 
}); 

und diese perfekt funktioniert.

Ich bin nur neugierig, warum die erste Methode für mich nicht funktioniert.

+0

Die erste Methode wurde in Laravel 4 verwendet, die letztere in Laravel 5. –

Antwort

8

Laravel 5 hat diese Funktionalität entfernt. Sie haben jetzt zu store the cache yourself:

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

Von 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

Gibt es irgendwelche wo sie diese dokumentiert? nur neugierig zu wissen. –

+0

@MuhammedKhalander - Ja. Ich habe es meiner Antwort hinzugefügt. –

0

Betrachten wir eine Laravel eloquent Query-Caching-Bibliothek rememberable

Es hat einen ziemlich guten Job genannt werden.

Verwandte Themen