Önceki yazılarda, Laravel’i kurma, CRUD işlemleri ve temel rotalar gibi temel kavramları inceledik. Bu yazıda ise Laravel’de ilişkileri nasıl kullanacağımıza bakacağız. Laravel’de ilişkiler başlıklı yazımıza hoş geldiniz !
İlişkiler Nedir?
İlişkiler, bir model ile diğer modeller arasındaki bağlantıları temsil eder. Veritabanındaki tablolar arasındaki ilişkileri Laravel modellerinde de tanımlayarak daha karmaşık ve organize uygulamalar geliştirmek mümkündür. Bu yazıda da Laravel’de ilişkiler basit bir şekilde anlatılacak ve başlangıç aşamasında olanlar için yol gösterecek.
Blog Uygulaması Örneği:
Blog uygulamamızda Post
ve User
modelleri arasında ilişki kuracağız. Bir post, bir kullanıcıya ait olacak ve bir kullanıcı birden fazla post oluşturabilecek.
1. İlişki Tanımlama:
Post.php:
PHP
public function user()
{
return $this->belongsTo(User::class);
}
User.php:
PHP
public function posts()
{
return $this->hasMany(Post::class);
}
2. Veritabanı Yapısı:
Bu modeller, veritabanında aşağıdaki gibi bir tablo yapısı oluşturacaktır:
posts:
id
title
content
user_id
users:
id
name
email
password
3. Kullanım Örnekleri:
- Bir post’un yazarını bulmak için:
PHP
$post->user->name;
- Bir kullanıcının tüm postlarını listelemek için:
PHP
foreach ($user->posts as $post) {
// ...
}
4. Rota Tanımlama:
routes/web.php
dosyasında ilişki ile ilgili rotaları tanımlayabilirsiniz:
PHP
Route::get('/users/{user}/posts', 'UserController@posts');
5. Görünümler:
resources/views
klasöründe ilişki ile ilgili görünümleri oluşturabilirsiniz:
HTML
@foreach ($user->posts as $post)
<li>{{ $post->title }}</li>
@endforeach
Sonuç:
Bu yazıda, Laravel’de ilişkileri nasıl kullanacağımıza dair temel bilgileri inceledik. Blog uygulaması örneği üzerinden ilişki kurma ve kullanma işlemlerini adım adım ele alarak, Laravel’in sunduğu ilişkisel veri modelleme avantajlarını deneyimledik.
Ek Kaynaklar:
- Laravel Resmi Dokümantasyonu: https://laravel.com/docs/10.x
- Laravel Türkiye Topluluğu: https://laravel.gen.tr/
Bu blog yazı serisinde, Laravel’in temel özelliklerini ve kullanımını detaylı bir şekilde inceleyeceğiz. Takipte kalın!