Skip to main content

Laravel Eloquent ORM İle Veritabanı Modeli Oluşturma Rehberi 💾


💡 Bu Rehberde Ne Öğreneceksiniz

Bu rehberde, Laravel Eloquent ORM yapısını kullanarak veritabanı tablolarını temsil eden model sınıflarını oluşturmayı öğreneceksiniz. Eloquent sayesinde SQL sorgusu yazmadan, nesne tabanlı (OOP) bir yaklaşımla veritabanı kayıtlarını yönetebilirsiniz.


🧠 Teknik Özet

  • Konu: Eloquent ORM ile veritabanı model yapısı oluşturmak.
  • Amaç: SQL sorgularını elle yazmadan tablo işlemlerini modeller üzerinden yönetmek.
  • Araçlar: Laravel Artisan CLI, Eloquent ORM.

🏗️ Adım 1: Eloquent Model Kavramı

Eloquent, Laravel’in nesne ilişkisel eşleyicisi (ORM) olarak görev yapar. Her model, veritabanındaki bir tabloyu temsil eder.

  • Model adları tekil, tablo adları çoğul olur.

    Örnek: Link modeli varsayılan olarak links tablosuna bağlanır.

  • Model aracılığıyla ekleme, silme, güncelleme, sorgulama işlemleri yapılabilir.


⚙️ Adım 2: Yeni Bir Model Oluşturma

Aşağıdaki Artisan komutu ile yeni bir model oluşturabilirsiniz:

php artisan make:model Link

Bu komut app/Models/Link.php dosyasını oluşturur.

Oluşturulan sınıf:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Link extends Model
{
use HasFactory;
}

Bu sınıf, Eloquent’in Model sınıfını miras alır ve tüm ORM özelliklerini barındırır.


🧩 Adım 3: Modelde Özelleştirme

İleride model üzerinde özelleştirme yapabilirsiniz. Örneğin:

// Tablonun adını değiştirmek
protected $table = 'baglantilar';

// Otomatik timestamp alanlarını kapatmak
public $timestamps = false;

// Toplu atama yapılabilir alanlar
protected $fillable = ['url', 'description', 'enabled'];

$fillable, güvenli veri atamaları için önemlidir.


🔗 Adım 4: Model İlişkileri

Eloquent ile tablolar arasında kolayca ilişki kurulabilir:

public function user()
{
return $this->belongsTo(User::class);
}

Bu ilişki, her Link kaydının bir User modeline ait olduğunu belirtir.

Diğer ilişki türleri:

  • hasOne – bire bir
  • hasMany – bire çok
  • belongsToMany – çoktan çoğa

⚡ Adım 5: Migration ile Modeli Birlikte Oluşturma

Model ve migration dosyasını aynı anda oluşturabilirsiniz:

php artisan make:model Proje -m

Bu komut, hem Proje modelini hem de create_projes_table adlı migration dosyasını üretir.


❓ Sıkça Sorulan Sorular (SSS)

1. ORM nedir ve neden kullanmalıyım?

ORM, veritabanı tablolarını programlama dili nesneleriyle eşleştirir. SQL yazmadan veri işlemlerini nesne tabanlı olarak yapmanızı sağlar.

2. Model dosyamda neden $fillable veya $guarded tanımlamalıyım?

Toplu veri atamalarında güvenlik sağlar. $fillable, hangi sütunlara veri yazılabileceğini; $guarded, hangilerinin korunacağını belirtir.

3. Model farklı bir klasörde olabilir mi?

Evet. Farklı bir dizin kullanabilirsiniz ancak namespace tanımını (namespace App\Models;) buna göre güncellemelisiniz.

4. İlişki tanımlamak zorunlu mu?

Hayır, ama büyük projelerde tablolar arası ilişkileri yönetmek için önerilir.

5. Eloquent modelini testlerde nasıl kullanabilirim?

HasFactory özelliği sayesinde test verilerini hızlıca oluşturabilirsiniz.


🏁 Sonuç

Artık Laravel’in güçlü ORM yapısı Eloquent ile veritabanı modellerinizi oluşturabilir ve yönetebilirsiniz. SQL sorgularına gerek kalmadan, nesne tabanlı bir yapıyla güvenli ve okunabilir kodlar yazabilirsiniz.

Rabisu Bulut platformunda kendi Laravel projenizi başlatarak Eloquent modellerini hemen deneyin! 🚀