Order by rand() in yii2
Hallo Jungs, ich bin verwirrt mit einer Sache
Ich schreiben möchte folgende Abfrage in yii2
aber ich bin nicht in der Lage, um die erwartete Ausgabe
SELECT * FROM user where category_id=5 ORDER BY rand() LIMIT 4
Für, dass ich getan habe folgenden
$data= User::find()->where(['category_id'=> 5])->orderBy(['rand()'])->limit(4);
Aber es erzeugt den Befehl wie dem folgenden
SELECT * FROM `user` WHERE `category_id`=5 ORDER BY `0` LIMIT 4
Ist nicht eine gültige mysql-Anweisung,also was sollte ich tun, um die Abfrage richtig?
Mein Ziel ist es, um jede zufällige 4 Datensätze aus user
Tabelle.
Es sei denn, Sie kümmern sich nicht um die Leistung, bestellen Sie nie von
habe es danke. Ich verwendete die Methode, die in der Schlussfolgerung auf, dass Artikel.
Lesen Sie den Artikel. Es gibt verschiedene Lösungen gibt und ein graph, der zeigt, wie Sie führen Sie auf unterschiedlichen Datensätzen. Es ist nicht relevant, wie viele Datensätze Sie brauchen, um zu finden, es ist mehr wichtig, wie viele Einträge Sie in der Tabelle.
rand()
. Es ist furchtbar ineffizient.habe es danke. Ich verwendete die Methode, die in der Schlussfolgerung auf, dass Artikel.
Lesen Sie den Artikel. Es gibt verschiedene Lösungen gibt und ein graph, der zeigt, wie Sie führen Sie auf unterschiedlichen Datensätzen. Es ist nicht relevant, wie viele Datensätze Sie brauchen, um zu finden, es ist mehr wichtig, wie viele Einträge Sie in der Tabelle.
InformationsquelleAutor Mike Ross | 2015-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wickeln Sie es in yii\db\Ausdruck um zu verhindern, dass Flucht und entfernen von array-Teil:
Limit
funktioniert nicht inActiveDataProvider
Teil? was mache ich falsch?Andere Frage, das aktuelle problem ist gelöst.
für limit @arogachev, eine Antwort auf eine andere Frage hier ist der link link
bitte ändern Sie Expresssion('rand()') zum Ausdruck('rand()')
Getan, vielen Dank für die Bemerkung. By the way, können Sie vorschlagen, Bearbeiten, für alle post zu.
InformationsquelleAutor arogachev
Ich bin nicht wirklich ein Experte auf yii2 Abfrage-generator, jedoch angeben, die Reihenfolge sollte helfen
limit
doesnt work inActiveDataProvider
. Irgendwelche Gedanken?setzen Sie einfach die Paginierung auf false und dann die manuelle Einstellung von limit arbeiten
InformationsquelleAutor Shadow