2016-07-20 14 views
1

Ich habe eine Website in Laravel 5.2 gebaut, die mehrere Sprachen unterstützt. Die meisten Inhalte stammen aus der MySQL-Datenbank. Ich cache die meisten meiner Abfragen. Beispiel:Laravel 5 Abfragen Cache

Das Problem ist, wenn ich die englische Version der Website besuche, werden die Abfrageergebnisse gespeichert. Wenn ich dann die Sprache auf Deutsch ändere, wird die Abfrage noch zwischengespeichert und zeigt die englischen Daten aus der Datenbank an. Habt ihr irgendwelche Vorschläge, wie ich damit umgehen kann?

Danke

Antwort

0

ich das Gebietsschema im Cache-Namen enthalten würde:

$locale = App::getLocale(); 

$categories = Cache::remember('Categories.' . $locale, 1440, function() 
{ 
    return $this->category->getAllOrderByRank(); 
}); 

Auf diese Weise, wenn Sie en gesetzt sind Sie Categories.en Abfrage ziehen werden, wenn Sie zu setzen sind de Sie erhalten Categories.de usw.

Ich frage mich jedoch, wo machst du die Übersetzungen? Dies sollte wahrscheinlich nicht durch eine zwischengespeicherte Abfrage beeinflusst werden.

+0

Danke Samsquanch. Der größte Teil der Übersetzung wird in einer Datenbank gespeichert. – rafiaTech

+0

@rafiaTech welchen Cache-Treiber verwenden Sie? Entschuldigung, ich bin nicht sicher, warum Sie die Texte aus einem Cache-Speicher lesen, anstatt es aus der Datenbank zu lesen ... der Cache ist immer schneller? In diesem Fall sollten wir Cache-Strategien für die meisten unserer Daten anwenden? – JCarlos