Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

User tablosunda bir kullanıcı silindiğinde , userdetay tablosundaki ilişkili kaydında silinmesini istiyorum.
User model içinde boot fonksiyonu içinde deleting işlemini dinliyorum ve kod beklediğim gibi çalışıyor.
Sadece öğrenmek istiyorum doğru yol bu mu?
Çünkü DB::delete ile silseydim modeli atlamış olacaktım ve detay silinmeyecekti.

 protected static function boot()
{
    parent::boot();
    static::deleting(function ($user) {
        $user->userdetay()->delete();
    });

Zaten ilişki varsa silinir otomatik on delete cascade ekledikten. Ek olarak bu işlemi neden boot içinde yaptın anlamadım sıkıntı orayi bu işlemler için kullanman controller içinde halletmeni öneririm

on delete cascade hakkında hiç bir bilgim yok. Ne oldugunu açıklaman mümkün mü?

    aeneas "ON DELETE CASCADE," bir veritabanı ilişkisi için belirlenen bir kuraldır. Bu kural, birincil anahtarı (primary key) olan bir kaydın silindiğinde, bu kayıt ile ilişkili diğer kayıtların otomatik olarak silinmesini sağlar. Yani, bir kayıt silindiğinde, o kayıtla ilişkili diğer kayıtların da silinmesi işlemi otomatik olarak gerçekleşir.

    Örneğin, "users" tablosu ile "userdetails" tablosu arasında bir ilişki varsa ve bu ilişki "ON DELETE CASCADE" ile tanımlanmışsa, bir kullanıcı kaydı silindiğinde, bu kullanıcıya ait detay kaydı da otomatik olarak silinir. Bu durum, veritabanındaki veri bütünlüğünü sağlamak ve ilişkili kayıtların uyumlu olmasını garantilemek için kullanılır.

    Bu özellik sayesinde, ilişkili verilerin manuel olarak silinmesi gerekmeksizin, veritabanı otomatik olarak bu işlemi gerçekleştirir.
    Örnek mesela

    Schema::create('userdetails', function (Blueprint $table) {
        $table->id();
        $table->foreignId('user_id')->constrained()->onDelete('cascade');
        $table->timestamps();
    });

    Anladım çok teşşekkür ederim. Denedim ve sorunsuz çalışıyor.

      aeneas Bu şekilde foreign key ile bu işlemi yaptığınızda UserDetail bir model olarak değil veri tabanında bir satır olarak silindiği için model eventları ateşlenmeyecek ve UserDetail içinde event tanımladıysanız bunlar çalışmayacak. UserDetail sisteme bir dosya (resim, pdf vs) ekliyorsa onlar da silinmeyecek. Cascade yine kullanın ama silme sırasında bunları da düşünmeniz ve sizin yapmanız lazım.

      UserDetail tablosuna da başka bir tablo bağlıysa ve cascade varsa onlar da beraberinde silinecek, bu dediklerim diğer alt modeller için geçerli olacak. Bunu da unutmayın.