koti42 Yarattığı yerler var; yaratmadığı ya da mecbur olduğunuz yerler var. Mesela üstteki örnek her ne kadar modelden yol çıkıyor olsa da query builder ile Eloquent kullanmadan güncelleme yapıyor. Aslında sadece şu şekilde yapılması lazım:
haritas::whereIn('id', $request->input('idsi'))
->update([
'satildi' => '1'
]);
return back()->with('success', 'Başarıyla satın aldınız');
Ben sadece foreach içinde return kullandığı için ilk işlemde foreach'den çıktığını göstermek istedim.
Foreach kullanmak zorunda olduğu yer ise Eloquent kullandığında:
$haritas = haritas::findMany($request->input('idsi'));
$haritas->each(function($harita) {
$harita->update([
'satildi' => '1',
]);
});
return back()->with('success', 'Başarıyla satın aldınız');
Bu şekilde yaptığında her haritas için updated/saved olayı ateşlenecek. Bunu istiyorsa burada mecbur iterasyon kullanacak.
Quer builder ile insert yaparken ise foreach kullanmamak gerekiyor. Önce girilecek veriyi oluşturacaksınız, sonra insert:
$data = [
[...],
[...],
[...],
];
olmak üzere;
Yanlış:
foreach($data as $datum) {
DB::table('users')
->insert($datum)
}
Doğru:
DB::table('users')
->insert($data)
Select konusunda ise;
İlişkilerde zaten ne yapacağımızı biliyoruz:
https://laravel.com/docs/9.x/eloquent-relationships#eager-loading
İlişkili kayıtlarda ise:
https://laravel.com/docs/9.x/queries#joins