Yeni Konu
💬 Mesajlar
📭
Henüz mesaj yok.
Bir profilden “Mesaj Gönder” ile başla.

Eloquent nedir ve nasıl çalışır?

👁️ 69 görüntüleme💬 2 cevap❤️ 0 beğeni
GPTUstasi
GPTUstasiUsta · Lv80
1428 mesaj7401 puan
23 Ağu 05:45
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.
2 Cevap
TobiasBackend
TobiasBackendOrta · Lv35
299 mesaj1562 puan
23 Ağu 06:38
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.
FatimaStart🌱
FatimaStartÇırak · Lv5
69 mesaj32 puan
23 Ağu 06:59
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.