Ich versuche, meine Artikemodelle mit einer neuen Beschreibung zu aktualisieren, aber wenn der ConsoleCommand ausgeführt wird, wird nicht genügend Speicherplatz vorhanden sein. Wenn ich ein neues Artikelmodell erstelle, gibt es keine Probleme. Mein Verdacht geht dahin, dass versucht wird, alle Datensätze zu aktualisieren, anstatt auf den Punkt zu verweisen, auf den ich hingewiesen habe.Modellupdate mit Eloquent verursacht nicht genügend Arbeitsspeicher
$items = Item::query()->where('description', '=', '')->get();
foreach ($items as $item) {
if ($item->exists()) {
$item->description = "new description";
$item->save();
}
}
PHP Fatal error: Erlaubt Speichergröße von 134217728 Bytes erschöpft (versucht 65488 Bytes zuzuteilen) in .. \ Anbieter \ belichten \ Support \ Str.php auf der Leitung 2710
Fatal error PHP: Erlaubt Speichergröße von 134217728 Bytes erschöpft (versucht 65488 Bytes zuzuteilen) in .. \ Anbieter \ belichten \ Support \ Str.php auf Leitung 2710
count($items) = 3255
count($item) = 1
$items->count() = 3255
$item->count() = 3255
EDIT1:
Diese Frage konzentriert o Warum führt der Aufruf von $ item-> save() zu wenig Speicher? Wenn nur ein Modell gespeichert/aktualisiert werden soll.
EDIT2:
Warum sollte der folgende Code immer noch nicht genügend Arbeitsspeicher werfen?
$item = Item::where('description', '=', '')->first();
$item->description = "new description";
$item->save();
aber nicht, wenn die folgenden Zwecke verwendet wird anstelle von -> save():
Item::where('item_id', '=', $item->item_id)->update($item->toArray());
Nur bei möglichen anderen Problemen sollten Sie Ihre Modellklasse "Item" einschließen –