design

Laravel’de Eloquent ORM: Veritabanı İşlemlerini Kolaylaştırın

March 23, 2025

Merhaba arkadaşlar, bugün sizlere Laravel’de Eloquent ORM hakkında detaylı bir rehber sunacağım. Eloquent, Laravel’in güçlü ve esnek bir ORM (Object-Relational Mapping) sistemidir. Veritabanı işlemlerini kolaylaştıran ve geliştiricilere zaman kazandıran bu yapı, Laravel’in en sevilen özelliklerinden biridir. Gelin, Eloquent’in sunduğu özelliklere ve nasıl kullanabileceğinize birlikte göz atalım.

Eloquent ORM Nedir?

Eloquent, veritabanı tablolarını PHP sınıfları gibi yönetmenizi sağlayan bir ORM sistemidir. Bu sayede, karmaşık SQL sorguları yazmaktan kurtulur ve veritabanı işlemlerini daha okunabilir ve sürdürülebilir bir şekilde gerçekleştirebilirsiniz.

Eloquent ORM Kullanımı

Model Oluşturma

Eloquent’i kullanmak için önce bir model oluşturmanız gerekiyor. Yeni bir model oluşturmak için aşağıdaki komutu kullanabilirsiniz:


php artisan make:model Product


Bu komut, app/Models/Product.php dosyasını oluşturacaktır. Eğer modelle birlikte migration da oluşturmak istiyorsanız, -m parametresini ekleyin:


php artisan make:model Product -m


Veritabanı Tablosu ile Modeli İlişkilendirme

Eloquent, varsayılan olarak model adının çoğul halini veritabanı tablosu olarak kabul eder. Örneğin, Product modeli products tablosu ile ilişkilendirilir. Eğer farklı bir tablo adı kullanmak istiyorsanız, modelde $table özelliğini tanımlayabilirsiniz:


protected $table = 'my_products';


Veri Ekleme

Eloquent ile veri eklemek oldukça kolaydır. Örneğin, yeni bir ürün eklemek için:


$product = new Product;
$product->name = 'Laptop';
$product->price = 999.99;
$product->save();


Veya daha kısa bir şekilde:


Product::create([
    'name' => 'Laptop',
    'price' => 999.99,
]);


Veri Okuma

Eloquent ile veri okumak da oldukça kolaydır. Örneğin, tüm ürünleri listelemek için:


$products = Product::all();


Belirli bir ürünü bulmak için:


$product = Product::find(1);


Koşullara göre veri çekmek için:


$products = Product::where('price', '>', 500)->get();


Veri Güncelleme

Eloquent ile veri güncellemek için:


$product = Product::find(1);
$product->price = 899.99;
$product->save();


Veya daha kısa bir şekilde:


Product::where('id', 1)->update(['price' => 899.99]);


Veri Silme

Eloquent ile veri silmek için:


$product = Product::find(1);
$product->delete();


Veya daha kısa bir şekilde:

Product::destroy(1);

Eloquent ORM’in Avantajları

  • Okunabilirlik: Eloquent, veritabanı işlemlerini daha okunabilir ve anlaşılır hale getirir.
  • Esneklik: Eloquent, karmaşık sorguları kolayca yazmanızı sağlar.
  • Zaman Tasarrufu: Eloquent, geliştirme sürecini hızlandırır ve zaman kazandırır.

Eloquent ORM ile İlişkiler

Eloquent, veritabanı tabloları arasındaki ilişkileri kolayca yönetmenizi sağlar. İşte bazı ilişki türleri:

  1. One-to-One (Bire Bir)
  2. Örneğin, bir kullanıcının bir profili olabilir:


class User extends Model
{
    public function profile()
    {
        return $this->hasOne(Profile::class);
    }
}
  1. One-to-Many (Bire Çok)
  2. Örneğin, bir kullanıcının birden fazla gönderisi olabilir:


class User extends Model
{
    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}
  1. Many-to-Many (Çoktan Çoğa)
  2. Örneğin, bir kullanıcının birden fazla rolü olabilir:


class User extends Model
{
    public function roles()
    {
        return $this->belongsToMany(Role::class);
    }
}


Eloquent ORM ile Query Builder

Eloquent, Query Builder ile birlikte çalışarak daha karmaşık sorgular yazmanızı sağlar. Örneğin:


$users = DB::table('users')
            ->join('contacts', 'users.id', '=', 'contacts.user_id')
            ->select('users.*', 'contacts.phone')
            ->get();
Laravel’de Eloquent ORM, veritabanı işlemlerini kolaylaştıran ve geliştiricilere zaman kazandıran güçlü bir araçtır. Eğer veritabanı işlemlerinizi daha okunabilir ve sürdürülebilir hale getirmek istiyorsanız, Eloquent’i mutlaka kullanmalısınız. Bir sonraki yazımda, Laravel’de Form ve Validation İşlemleri konusuna değineceğim. Görüşmek üzere!

4 + 1 =