Die folgende Tutorial-Kolumne von Laravel führt Sie bitte nicht ein, wenn Sie die chunkById-Methode verwenden! , ich hoffe, es wird Freunden in Not helfen!
Bitte sortieren Sie nicht, wenn Sie die Methode chunkById verwenden Die Datenmenge muss stapelweise verarbeitet werden. Es ist unrealistisch, sie alle auf einmal herauszunehmen und dann auszuführen. Glücklicherweise stellt uns Laravel die Methode chunkById zur Verfügung, mit der wir sie bequem verarbeiten können. Der Pseudocode lautet wie folgt:
Student::query() ->where('is_delete', false) ->orderBy('id', 'DESC') ->chunkById(200, function($students) { // 在这里进行逻辑处理 });
Finden Sie den Grund
Der chunkById-Code im Laravel-Quellcode lautet wie folgtpublic function chunkById($count, callable $callback, $column = null, $alias = null) { $column = is_null($column) ? $this->getModel()->getKeyName() : $column; $alias = is_null($alias) ? $column : $alias; $lastId = null; do { $clone = clone $this; $results = $clone->forPageAfterId($count, $lastId, $column)->get(); $countResults = $results->count(); if ($countResults == 0) { break; } if ($callback($results) === false) { return false; } $lastId = $results->last()->{$alias}; unset($results); } while ($countResults == $count); return true; }
Weiter zur Anzeige der forPageAfterId-Methode
public function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id') { $this->orders = $this->removeExistingOrdersFor($column); if (! is_null($lastId)) { $this->where($column, '>', $lastId); } return $this->orderBy($column, 'asc') ->take($perPage); }
Lösung
Entfernen Sie einfach die vorherige orderBy('id', 'desc').Student::query() ->where('is_delete', false) ->chunkById(200, function($students) { // 在这里进行逻辑处理 });
Zusammenfassung
Fügen Sie in Zukunft keine benutzerdefinierte Sortierung hinzu, wenn Sie chunkById oder die Chunk-Methode verwenden.
Sie werden lernen, während Sie lernen. . .
Das obige ist der detaillierte Inhalt vonBitte nicht sortieren, wenn Sie die chunkById-Methode verwenden!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!