Döngü İçinde Yazma (ARCH7052)
Anahtar php.orm.write-inside-loop · Önem error · Kategori orm
Döngü içinde her satır için ayrı save()/flush çağırmak, öğe başına bir veritabanı gidiş-dönüşü demektir. Bu, yazmaları tek toplu işlemde gruplamak yerine ağ ve transaction yükünü çoğaltır.
Hatalı
Bölüm başlığı “Hatalı”<?phpforeach ($rows as $row) { $user = new User(); $user->email = $row['email']; $user->save(); // her yinelemede DB gidiş-dönüşü}<?php$batch = array_map(fn($row) => [ 'email' => $row['email'],], $rows);
User::insert($batch); // tek toplu yazmaDüzeltme
Bölüm başlığı “Düzeltme”Satırları toplayıp döngü dışında tek bir toplu insert/update ile kaydedin.