Laravel Eloquent ORM ve Model Kullanımı
Laravel, veritabanı işlemlerini daha kolay ve anlaşılır hale getiren Eloquent ORM (Object Relational Mapping) sistemini kullanır. Eloquent, her veritabanı tablosu için bir model oluşturmanıza ve bu model üzerinden CRUD işlemlerini basit SQL sorgularına ihtiyaç duymadan gerçekleştirmenize olanak tanır.
1️⃣ Eloquent Model Oluşturma
Laravel’de yeni bir model oluşturmak için Artisan komutunu kullanabilirsiniz:
php artisan make:model PostBu komut, app/Models/Post.php dosyasını oluşturur. Eğer model ile birlikte bir migration da oluşturmak isterseniz:
php artisan make:model Post -mBu komut hem Post modelini hem de Post tablosunu oluşturacak bir migration dosyasını hazırlar.
2️⃣ Model İçinde Tanımlamalar
Model dosyamızın içinde veritabanı tablomuza dair tanımlamalar yapabiliriz. Örneğin:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
protected $table = 'posts'; // Eğer model adı ile tablo adı farklıysa tanımlanır
protected $fillable = ['title', 'content']; // Form ile toplu veri ekleme için izin verilen alanlar
}- $table değişkeni, modelin hangi tabloya bağlanacağını belirler.
- $fillable dizisi, toplu veri eklemelerinde güvenlik için belirlenen alanları ifade eder.

3️⃣ Eloquent ile Veritabanı İşlemleri
✅ Veri Ekleme (INSERT)
$post = new Post();
$post->title = "Laravel ORM Kullanımı";
$post->content = "Eloquent ORM ile veritabanı işlemleri çok kolay!";
$post->save();Alternatif olarak:
Post::create([
'title' => "Laravel ORM",
'content' => "ORM kullanarak veritabanı yönetimi!"
]);Not:
create()metodunun çalışması için$fillableiçinde ilgili sütunların tanımlı olması gerekir.
✅ Veri Getirme (SELECT)
Tüm Verileri Getirme
$posts = Post::all();Belirli Bir Kayıdı Getirme
$post = Post::find(1); // ID = 1 olan kaydı getirirKoşullu Veri Getirme
$posts = Post::where('title', 'Laravel ORM')->get();✅ Veri Güncelleme (UPDATE)
$post = Post::find(1);
$post->title = "Laravel Eloquent ORM Güncelleme";
$post->save();Alternatif olarak:
Post::where('id', 1)->update(['title' => 'Yeni Başlık']);
✅ Veri Silme (DELETE)
$post = Post::find(1);
$post->delete();Alternatif olarak:
Post::destroy(1);Not:
destroy()metodu ile birden fazla ID’yi aynı anda silebilirsiniz:Post::destroy([1, 2, 3]);
4️⃣ Eloquent İlişkiler (Relationships)
Laravel, veritabanı tabloları arasında ilişkileri kolayca yönetmenizi sağlar. İşte bazı temel ilişkiler:
One to One (Bire Bir) İlişki
class User extends Model
{
public function profile()
{
return $this->hasOne(Profile::class);
}
}One to Many (Bire Çok) İlişki
class Post extends Model
{
public function comments()
{
return $this->hasMany(Comment::class);
}
}Many to Many (Çoktan Çoğa) İlişki
class Post extends Model
{
public function tags()
{
return $this->belongsToMany(Tag::class);
}
}- Bu kod,
Postmodeli ileTagmodeli arasında bir çoktan çoğa ilişki tanımlar. belongsToManymetodu, bu ilişkiyi kurmak için kullanılır.- İlişki, veritabanında bir ara tablo (
post_tag) üzerinden yönetilir. - Bu ilişki sayesinde, bir gönderiye ait etiketleri kolayca çekebilir, yeni etiketler ekleyebilir veya mevcut etiketleri güncelleyebilirsiniz. Aşağıda yukarıda yer alan kısa kodun geniş açıklamasını bulabilirsiniz.
1️⃣ class Post extends Model
- Bu satır,
Postadında bir sınıf tanımlar ve bu sınıf, Laravel’inModelsınıfından türetilir. Modelsınıfı, Laravel’in Eloquent ORM (Object-Relational Mapping) sisteminin bir parçasıdır. Bu sınıf, veritabanı tablolarıyla etkileşim kurmayı kolaylaştırır.Postmodeli, veritabanındakipoststablosuyla eşleşir. Bu tablo, blog gönderileri veya benzer içerikleri saklar.
2️⃣ public function tags()
- Bu satır,
tagsadında bir metot tanımlar. Bu metot,Postmodeli ileTagmodeli arasındaki ilişkiyi temsil eder. - Metot adı (
tags), ilişkinin adını belirtir. Bu isim, ilişkinin doğasını anlamak için önemlidir.
3️⃣ return $this->belongsToMany(Tag::class);
- Bu satır,
Postmodeli ileTagmodeli arasında çoktan çoğa (many-to-many) bir ilişki tanımlar. belongsToManymetodu, Laravel’in Eloquent ORM sisteminde çoktan çoğa ilişkileri kurmak için kullanılır.Tag::class, ilişkinin kurulacağı modeli belirtir. Bu durumda,Tagmodeli ile ilişki kurulur.
Çoktan Çoğa İlişki Nedir?
- Çoktan çoğa ilişki, iki model arasında birden fazla kaydın birbiriyle ilişkilendirilebileceği bir ilişki türüdür.
- Örneğin, bir blog gönderisi (
Post) birden fazla etikete (Tag) sahip olabilir ve bir etiket de birden fazla blog gönderisiyle ilişkilendirilebilir. - Bu tür ilişkiler, veritabanında bir ara tablo (pivot table) kullanılarak yönetilir. Bu ara tablo, iki modelin birincil anahtarlarını (primary keys) içerir.
📌 Sonuç
Eloquent ORM, Laravel’in en güçlü özelliklerinden biridir ve veritabanı işlemlerini oldukça kolay hale getirir. CRUD işlemlerini minimal kod ile gerçekleştirmek, model ilişkilerini tanımlamak ve yönetmek için oldukça kullanışlıdır.
🚀 Bir sonraki adım: Laravel’de Migration ve Seeder Kullanımı 🎯
Laravel Eğitimi Konular
- Laravel Nedir ve Neden Kullanılmalı?
- Laravel Kurulumu (Composer ile Adım Adım Rehber)
- Laravel Proje Yapısı ve MVC Mimarisi
- Laravel Routing ve Controller Kullanımı
- Laravel Middleware Kullanımı
- API isteklerinde middleware kullanımı
- Laravel Migration ve Seeder Kullanımı
- Laravel Factory ve Faker ile Test Verisi Üretme
- Laravel’de API Kullanımı ve Token Bazlı Authentication
- Laravel Rol ve Yetkilendirme İşlemleri
- Laravel’de Cache ve Performans Optimizasyonu
- Laravel’de Queue (Kuyruk) Kullanımı ve Arka Plan İşlemleri
- Laravel Event & Listener Kullanımı
- Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi
- Laravel’de Test Driven Development (TDD) ve Test Yazımı


