Laravel 9'da Veri Bütünlüğü Sağlamak - Database Transactions

PHP 31 Ara 2021

Birden fazla veri tabanı işlemini tek bir işlemde gruplandırırsanız, yazılan sorguların tamamı başarılı olmadan etkili bir sonuca ulaşılamaz. Aşağıdaki örneğe göz atalım:

$user = User::create([...]);

Team::create([
    'owner_id' => $user->id,
    ...
]);

Kodumuza göre, sisteme kayıt olan kullanıcıyı bir "Team" grubuna ekledik. Ancak kullanıcı olası bir sorun yüzünden "Team" tablosuna yazılamaz ise, veri tabanımızda herhangi bir "Team" tablosuna ait olmayan "User" kalacaktır.

Bu durumu engellemek için kod bloğunu "Transaction" içerisine alabilirsiniz.

DB::transaction(function(){
    $user = User::create([...]);

    Team::create([
        'owner_id' => $user->id,
        ...
    ]);
});

Eğer oluşturulan kullanıcı bir "Team" tablosuna kayıt edilemezse, kullanıcı kaydı dahil bütün işlemler geriye alınır.

Etiketler