129+ Eloquent Model, Polymorphic, HasMany, BelongsTo ilişkileri
Bir şarkı sayfasını açtığınızda Eloquent ORM arka planda onlarca sorgu çalıştırır. İşte detaylar:
URL'deki slug analiz edilir, hangi model olduğu belirlenir. Song::where('slug', $slug)->first() çalışır. Bulunamazsa 404 döner.
İlişkili veriler tek sorguda çekilir: with(['album', 'artist', 'genre']). N+1 sorgu problemi önlenir. 100 şarkı için 100 değil 4 sorgu çalışır.
Favori butonu için morphTo kullanılır. Aynı Favorite modeli hem Song, hem Album, hem Artist için çalışır. favoritable_type alanı hangi model olduğunu belirtir.
HasTranslations trait'i aktif dile göre title, description alanlarını otomatik çeker. $song->title dediğinizde app()->getLocale()'e göre doğru dil gelir.
Spatie Media Library ile görseller yüklenir. $song->getFirstMediaUrl('cover') ile kapak resmi alınır. Otomatik thumbnail üretimi, WebP dönüşümü yapılır.
Silinen kayıtlar veritabanından kalkmaz, deleted_at tarihi eklenir. Yanlışlıkla silinen içerik geri getirilebilir. withTrashed() ile silinmişler de görüntülenebilir.