zfrtemel Her bir ekleme yönteminin birer Eloquent işlemi olarak çalışması için foreach lazım. Eloquent işlemi ile kastettiğim model event'ları vs. Öteki türlü tek seferde ekleme SQL insert ile yapılabilir ama Eloquent özelliklerinden feragat etmiş olursunuz. Çoklu ekleme için saveMany, createMany, push gibi yöntemler var ama onlar da kendi içinde foreach yapıyor. Mesela
$product = Product::find(1);
$product->details()->saveMany([
new ProductDetail(['name' => '64 GB']),
new ProductDetail(['name' => '128 GB']),
]);
// ya da
$product->details()->createMany([
['name' => '64 GB'],
['name' => '128 GB']
]);
// ya da
$product->details[0]->name = '64 GB';
$product->details[1]->name = '128 GB';
$product->push();
// ya da
$details = [
['name' => '64 GB'],
['name' => '128 GB']
];
foreach($details as $detail) {
$product->details()->create($detail);
}
hepsi aynı şey. Hepsi iterasyon (foreach) kullanıyor. Eğer gerçek anlamda tek seferde ekleme nasıl yapılır diyorsanız:
DB::table('product_details')->insert([
['product_id' => 1, 'name' => '64 GB'],
['product_id' => 1, 'name' => '128 GB']
]);
şeklinde olur ki bu düz SQL. Burada Eloquent'in hiçbir özelliğinden faydalanamıyorsunuz.