In meiner Symfony / Doctrine-App habe ich eine Abfrage, die mit RANDOM () bestellt. Ich rufe dieselbe Methode mehrmals auf, aber es sieht so aus, als ob das Ergebnis der Abfrage zwischengespeichert wird.
Hier ist mein relevanter Code:
%Vor% Leider wird immer derselbe Datensatz zurückgegeben, unabhängig davon, ob ich null
sowohl an useQueryCache
als auch an useResultCache
übergebe. Ich habe versucht, false
anstelle von null
zu verwenden, aber das hat auch nicht funktioniert. Schließlich habe ich auch versucht, setResultCacheLifeSpan(0)
und setResultCacheLifeSpan(-1)
aufzurufen, aber keiner dieser Aufrufe hat einen Unterschied gemacht.
Irgendwelche Erkenntnisse darüber, wie Caching verhindert werden kann, da bei jedem Aufruf dieser Methode eine andere zufällige Zeile ausgewählt werden soll?
Bearbeiten: Ich habe auch versucht, clearResultCache()
aufzurufen, aber das hat am Ende einen Fehler verursacht, der besagt: "Ergebnis-Cache-Treiber nicht initialisiert".
Edit 2: Wie gewünscht, folgt hier das SQL, das durch Aufruf von $query->getSqlQuery()
:
Es stellt sich heraus, dass ich ein Idiot bin. Ich habe versucht, meine Anfrage für diese Frage zu vereinfachen, und dabei habe ich die wahre Ursache nicht erfasst. Ich hatte einen where()
und andWhere()
Aufruf, und die Kombination von Bedingungen führte dazu, dass nur ein möglicher Datensatz gefunden wurde. Danke, dass Sie sich die Zeit genommen haben, zu antworten, alle, Entschuldigung, dass Sie Ihre Zeit verschwendet haben!
Doctrine speichert auch Entitäten, die Sie im selben Request / Script-Lauf erstellt haben.
Zum Beispiel:
%Vor%Die print_r enthält nicht die Änderungen, die Sie während des Schlafs vorgenommen haben.
Der folgende Code wird diese Art von Speichercache entfernen:
%Vor%PS: Diese Antwort wurde hinzugefügt, weil ich in diesem Thema versucht habe, das obige Problem zu lösen.
Tags und Links caching symfony1 doctrine doctrine-1.2 symfony-1.4