Heim >PHP-Framework >YII >So verwenden Sie indexBy() in Yii2
In der Projektentwicklung werden häufig einige spezielle Werte als Index des Arrays verwendet. Im Allgemeinen können die Daten zuerst abgefragt und dann das Array in das Array gespleißt werden erforderliches Format in einer Schleife. Das YII2-Framework bietet jedoch eine einfachere Methode indexBy().
Wenn Sie die all()-Methode aufrufen, gibt sie ein Array zurück, das durch aufeinanderfolgende ganzzahlige Werte indiziert ist.
Manchmal möchten Sie möglicherweise ein bestimmtes Feld oder einen bestimmten Ausdruckswert als Index-Ergebnissatz-Array verwenden. Dann können Sie die Methode indexBy() verwenden, bevor Sie all() aufrufen, um diesen Zweck zu erreichen.
Zum Beispiel lautet das Abfrageergebnis von
// 以uid作为key值 $query = User::find() ->select(['uid', 'name']) ->indexBy('uid') ->asArray() ->all();
wie folgt:
{ "1001": { "uid": "1001", "name": "张三" }, "1002": { "uid": "1002", "name": "李四" }, "1003": { "uid": "1003", "name": "王五" } }
Wenn Sie den Wert des Ausdrucks als Index verwenden müssen, müssen Sie nur eine anonyme Funktion übergeben zur indexBy()-Methode:
// 以uid和name组合作为key值 $query = User::find() ->select(['uid', 'name']) ->indexBy(function ($row) { return $row['uid'] . $row['name']; // row中使用的字段名只能是查询返回的字段名 }) ->asArray() ->all();
Die Abfrageergebnisse lauten wie folgt:
{ "1001张三": { "uid": "1001", "name": "张三" }, "1002李四": { "uid": "1002", "name": "李四" }, "1003王五": { "uid": "1003", "name": "王五" } }
Hinweis: Im Gegensatz zu Abfragemethoden wie groupBy() oder orderBy() werden sie in einen Teil davon konvertiert Die SQL-Abfrageanweisung, und diese Methode (indexBy) wird ab verwendet. Sie wird erst wirksam, nachdem die Datenbank die Daten abgerufen hat. Das bedeutet, dass nur diese Spaltennamen in Ihrer SELECT-Abfrage verwendet werden können. Wenn Sie außerdem die Tabellennamenverbindung verwenden, um Spaltennamen abzurufen, z. B. customer.id, enthält das Ergebnis nur die ID-Spalte, sodass Sie ->indexBy(‘id’) ohne das Tabellennamenpräfix aufrufen müssen.
Empfohlen: „YII-Tutorial“
Das obige ist der detaillierte Inhalt vonSo verwenden Sie indexBy() in Yii2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!