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.
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.
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
}
$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.
$posts = Post::all();
$post = Post::find(1); // ID = 1 olan kaydı getirir
$posts = Post::where('title', 'Laravel ORM')->get();
$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']);
$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]);
Laravel, veritabanı tabloları arasında ilişkileri kolayca yönetmenizi sağlar. İşte bazı temel ilişkiler:
class User extends Model
{
public function profile()
{
return $this->hasOne(Profile::class);
}
}
class Post extends Model
{
public function comments()
{
return $this->hasMany(Comment::class);
}
}
class Post extends Model
{
public function tags()
{
return $this->belongsToMany(Tag::class);
}
}
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.post_tag
) üzerinden yönetilir.1️⃣ class Post extends Model
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()
tags
adında bir metot tanımlar. Bu metot, Post
modeli ile Tag
modeli arasındaki ilişkiyi temsil eder.tags
), ilişkinin adını belirtir. Bu isim, ilişkinin doğasını anlamak için önemlidir.3️⃣ return $this->belongsToMany(Tag::class);
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.Post
) birden fazla etikete (Tag
) sahip olabilir ve bir etiket de birden fazla blog gönderisiyle ilişkilendirilebilir.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’de Real-Time (Gerçek Zamanlı) Bildirimler Laravel, modern web uygulamalarında gerçek zamanlı bildirimler oluşturmak için güçlü…
Laravel’de Mail Gönderme ve Bildirimler Laravel, modern web uygulamaları geliştirirken e-posta gönderimi ve bildirim sistemleri…
Laravel, dosya yükleme ve depolama işlemleri için güçlü bir Storage (Dosya Depolama) mekanizması sunar. Bu mekanizma, yerel…
Laravel’de Çoklu Dil (Localization) Kullanımı: Uygulamanızı Küresel Hale Getirin 🌍 Laravel, modern web uygulamaları için…
Laravel’de Test Driven Development (TDD) ve Test Yazımı: Güvenilir ve Sürdürülebilir Kod Geliştirme Laravel, modern…
Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi Laravel, modern web uygulamalarında belirli…