BoraN7 Öncelikle uyarıda yazan o değil. Uyarıda anlatılan şu:
// Burada creating, creating, saving, saved olayları ateşlenmez çünkü model işlemi yapmıyorsunuz;
// Builder üzerinden düz SQL sorgusu çalıştırıyorsunuz
User::insert([
['name' => 'Ahmet', 'email' => 'ahmet@example.com'],
['name' => 'Mehmet', 'email' => 'mehmet@example.com'],
['name' => 'Veli', 'email' => 'veli@example.com'],
]);
// Burada updating, updated, saving, saved olayları ateşlenmez çünkü model işlemi yapmıyorsunuz;
// Builder üzerinden düz SQL sorgusu çalıştırıyorsunuz
Product::where('created_by_user', true)->update([
'status' => false
]);
// Burada deleting/deleted olayları ateşlenmez çünkü model işlemi yapmıyorsunuz;
// Builder üzerinden düz SQL sorgusu çalıştırıyorsunuz
Photo::where('thumbnail', true)->delete();
Yani anlayacağınız tek bir model ile işlem yaptığınızda olaylar ateşlenir. Model, tablonuzdaki bir satırı ifade eder, ne zaman ki birden fazla satır getirir o zaman Eloquent'in dışına çıkıp Query Builder'a yani SQL sorgusuna dönüşmüş demektir.
create ve save yöntemlerine gelince, hem create hem de save yöntemi creating, created, saving, saved olaylarını ateşler.
BoraN7 Ben diyelim modele creating tanımlamak istedim ve ilgili modele kayıt eklendikten sonra bir işlem yaptırmak istiyorum.
Bu yanlış. Model oluşturulmadan önce bir şey yapmak isterseniz creating olayında yaparsınız; model oluştuktan sonra işlem yapmak isterseniz created olayında yaptırırsınız.
BoraN7
$demo=App\Demo::find(1);
$demo->create([
'body' => 'something'
]);
Bu da yanlış. Model zaten var, update yazacaktınız sanırım. Burada update yazdığınızı varsayarsak updating ve updated olayları ateşlenir.
Hem birden fazla kayıt yapayım hem de creating/created ateşlensin istiyorsanız:
// Burada $users, oluşturulan User modellerini içeren bir Collection objesi olarak döner
// Her bir oluşturulan kayıt için ayrı ayrı creating/created olayları ateşlenir
$users = User::createMany([
['name' => 'Ahmet', 'email' => 'ahmet@example.com'],
['name' => 'Mehmet', 'email' => 'mehmet@example.com'],
['name' => 'Veli', 'email' => 'veli@example.com'],
]);
Hem birden fazla kayıt güncelleyeyim hem de updating/updated ateşlensin istiyorsanız:
// Her bir güncellenen Photo modeli için updating/updated olayı ateşlenir
Product::where('created_by_user', true)->get()->each(function($product) {
$product->update([
'status' => false,
]);
});
Hem birden fazla kayıt sileyim hem de deleting/deleted ateşlensin istiyorsanız:
// Her bir silinen Photo modeli için deleting/deleted olayı ateşlenir
Product::where('created_by_user', true)->get()->each(function($product) {
$product->delete();
});
// Model::destroy() yöntemi de her bir silinen model için deleting/deleted olayını ateşler
Photo::destroy([1, 3, 5, 7]);