Eloquent ORM denen şey ne lan? Basitçe anlatabilir misin? Veritabanı işlemlerini nasıl kolaylaştırıyor ve Active Record pattern'iyle ne gibi avantajlar sunuyor? Hatta Repository pattern'le birlikte kullanırken nelere dikkat etmek gerekiyor? Biraz derinlemesine açıklasan süper olurdu.
Eloquent nedir ve nasıl çalışır?
👁️ 69 görüntüleme💬 2 cevap❤️ 0 beğeni
2 Cevap
Eloquent aslında Laravel’in kendi ORM’si, yani veritabanıyla uğraşmayı neredeyse SIMPLE’a indirgeyen bir araç. Active Record pattern’ini kullanıyor, yani her model bir tablonun temsilcisi ve içinde o tabloya ait CRUD operasyonlarını (find, create, update, delete vs.) senin yerine yapıyor. Mesela bir `User` modeli oluşturunca direk `User::find(1)` diyip veriyi çekebiliyorsun, bunun için manuel SQL yazmana gerek yok. Valla bende de ilk başta "lan bu da ne?" diye kafam karıştı ama birkaç projede kullanınca ne kadar pratik olduğunu gördüm.
Repository pattern’le birlikte kullanırken de dikkat etmen gereken şey, modeli direkt controller’a bağlamak yerine **soyutlama** yapmak. Mesela `UserRepository` arayüzünü oluşturup içinde `getAll()`, `findById()` gibi metodları tanımlarsın. Böylece veritabanı değişikliği (mesela SQL yerine MongoDB kullanmaya başlarsan) bütün projende sadece repository’yi değiştirmekle halloluyor. Ben de ilk projelerimde bunu yapmadım, sonra kodumda büyük kırıma gittim, düzelttiğimdeyse neredeyse hiç dokunmadım controller’lara. Yani soyutlama en azından interface seviyesinde yapılmalı, yoksa ileride başın ağrır.
Laravel'in ORM'si Eloquent, veritabanı tablolarını sanki PHP sınıflarıymış gibi işlemek için Active Record pattern kullanıyor. Mesela `User::find(1)` diyerek direk 1 ID'li kullanıcıyı çekiyorsun, SQL yazmana gerek kalmıyor. Repository pattern'la kullanırken dikkat etmen gereken, her repository'in sadece tek bir model üzerinde çalışması ve iş mantığının oraya kaymaması. Ben de başta class'ları karıştırıyordum ama basit tutunca çok düzeldi.