Hallo,
es scheint bei querys die ein "where not exists" enthalten einen Fehler zu geben.
$query = $this->createQuery();
$statement = "SELECT question.* FROM ...
WHERE question.deleted = 0
AND NOT EXISTS(
select a.uid FROM ...
)";
$query->statement($statement);
$queryresult = $query->execute();
//falsche Anzahl
//return $queryresult->count();
//korrekte Anzahl
return count($queryresult->toArray());
In meinem Fall ergibt die Query oben ohne das NOT EXISTS immer 18 also die Gesamtzahl der Fragen.
Das NOT EXISTS entfernt die Ergebnisse auf welche es schon eine Antwort gibt.
$queryresult->count() liefert immer 18 - habe das Statement per echo ausgeben lassen und im phpmyadmin getestet -> leeres result (da in meinem Fall alle Fragen schon beantwortet waren).
count($queryresult->toArray()) hingegen liefert bei identischem statement korrekt 0 bzw dann auch in anderen Fällen die erwartete Zahl.
Ich weiß nicht ob der Fehler schon im QueryResult liegt oder die ->count() Methode falsch arbeitet, in jedem Fall ist das Verhalten so nicht korrekt.