Genel

Laravel Eloquent ORM ve Model Kullanımı

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 Post

Bu 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 -m

Bu 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.

Laravel Eloquent ORM ve Model Kullanımı

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 $fillable iç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ı getirir

Koş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, Post modeli ile Tag modeli arasında bir çoktan çoğa ilişki tanımlar.
  • belongsToMany metodu, 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, Post adında bir sınıf tanımlar ve bu sınıf, Laravel’in Model sınıfından türetilir.
  • Model sı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.
  • Post modeli, veritabanındaki posts tablosuyla eşleşir. Bu tablo, blog gönderileri veya benzer içerikleri saklar.

2️⃣ public function tags()

  • Bu satır, tags adında bir metot tanımlar. Bu metot, Post modeli ile Tag modeli 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, Post modeli ile Tag modeli arasında çoktan çoğa (many-to-many) bir ilişki tanımlar.
  • belongsToMany metodu, 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, Tag modeli 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ı 🎯

Web Doktoru

Matematikçi, Adli Bilişim Uzmanı, Bil. Yük. Müh. Full Stack Developer

Son Gönderiler

SEO, GEO ve AEO Optimizasyonu Rehberi

Dijital pazarlama stratejilerinde başarılı olmak için SEO (Arama Motoru Optimizasyonu), GEO (Coğrafi Optimizasyon) ve AEO…

5 Ağustos 2025

Web Sitesi Kurma Rehberi

Günümüzde bir web sitesi sahibi olmak, hem bireyler hem de işletmeler için oldukça önemli hale…

1 Ağustos 2025

Web Sunucusu Nedir? Hangi Durumlarda Kendi Sunucunuzu Kurmalısınız?

Web Sunucusu Nedir? Web sunucusu, kullanıcıların internet üzerinden bir web sayfasına erişmesini sağlayan güçlü bir…

30 Temmuz 2025

Unutulmaz Marka İçeriği Oluşturmanın Stratejik Rehberi

İçerik oluşturmak kolaydır. Özellikle son zamanlarda gelişen yapay zeka sayesinde. Ancak insanların hatırladığı marka içeriği…

9 Temmuz 2025

Perfex CRM ile İletiMerkezi SMS Entegrasyonu: Müşteri İletişimini Bir Üst Seviyeye Taşıyın

Perfex CRM, hızlı kurulumu ve sade arayüzüyle Türkiye’de giderek daha fazla tercih edilen, Codeigniter altyapısı…

24 Haziran 2025

Thunderbird İlk Kurulum ve E-posta Hesabı Ekleme Rehberi (Ekran Görüntülü Anlatım)

Thunderbird İlk Kurulum ve E-posta Hesabı Ekleme Rehberi (Ekran Görüntülü Anlatım) Mozilla Thunderbird, e-postalarınızı, takvimlerinizi,…

15 Haziran 2025