Wie man mit Doktrin zufällig auswählt

So frage ich meine Datenbank nach einigen Wörtern ab

$query = $qb->select('w')
    ->from('DbEntities\Entity\Word', 'w')
    ->where('w.indictionary = 0 AND w.frequency > 3')
    ->orderBy('w.frequency', 'DESC')
    ->getQuery()
    ->setMaxResults(100);

Ich verwende MySQL und möchte zufällige Zeilen erhalten, die den Kriterien entsprechen. In meiner Abfrage verwende ich order by rand ().

ich fanddas ähnlich Frage, die im Grunde schlägt vor, da ORDER BY RAND in der Lehre nicht unterstützt wird, können Sie stattdessen den Primärschlüssel randomisieren. In meinem Fall ist dies jedoch nicht möglich, da ich ein Suchkriterium und eine where-Klausel habe, sodass nicht jeder Primärschlüssel diese Bedingung erfüllt.

Ich habe auch eine gefundenCode-Auszug Das schlägt vor, dass Sie den OFFSET verwenden, um die Zeilen wie folgt zufällig zu sortieren:

$userCount = Doctrine::getTable('User')
     ->createQuery()
     ->select('count(*)')
     ->fetchOne(array(), Doctrine::HYDRATE_NONE); 
$user = Doctrine::getTable('User')
     ->createQuery()
     ->limit(1)
     ->offset(rand(0, $userCount[0] - 1))
     ->fetchOne();

Ich bin ein wenig verwirrt, ob dies mir helfen wird, die mangelnde Unterstützung für zufällige Bestellungen in meinem Fall zu umgehen oder nicht. Ich konnte nach setMaxResult keinen Offset hinzufügen.

Irgendeine Idee, wie dies erreicht werden kann?

Antworten auf die Frage(13)

Ihre Antwort auf die Frage