Merhaba Phphocasi.com.tr takipçileri,
Laravel ile eğitim serimizin Laravel Eloquent Relation sistemine One to Many Relation (bireçok ilişki) yapısı ile devam ediyoruz. Sizin yorumlarınız çok önemli lütfen paylaşım ve yorumlarınızı bizden esirgemeyin. Biliyorsunuz mobilhanem PHP ailesi olarak gelişiyoruz. Artık Laravel yapısının en büyük rakibi olan ? Codeigniter eğitimleri de başladı. Lütfen hangi yapıyı tercih ettiğinizi bizimle paylaşın… Ben yapı/framework kullanmam direk pure PHP ile kodlarım diyenler içinde PHP Eğitimlerimizi takip edebilirsiniz.
Laravel Eloquent One to Many Relation Nedir?
Bir önceki dersimizde sizinle One to One ilişkisini incelemiştik. One to One ilişkisi için örneğimiz bir kişinin yalnız bir tek TC Kimlik Numarası olmasıydı. Bu sefer işleyeceğimiz konu için ise bir tablo satırının (örneğin yazılar) diğer bir tablodan birden fazla satır ile ilişkili olmasıdır (örneğin yorumlar).
Laravel Eloquent One to Many Relation Bağlantısı
Parantez içerisinde verdiğimiz örnekten yola çıkarsak bir yazı ya da haberin birden fazla yorumu olabilir. Bunun için örnek bir veritabanı hazırlayalım.
php artisan make:model Post -m
kodunu yazarak Post adında bir model ve bu modele bağlı bir migration dosyası oluşturuyoruz. Oluşturduğumuz migration dosyasının içerisine
$table->string("title"); $table->text("detail");
yazarak Post tablosunu basit bir şekilde oluşturuyoruz. Daha sonra ise yorumların yer alacağı tablomuz ve modelimizi oluşturmak için
php artisan make:model Comment -m
kodunu yazıyoruz ve yine migration içerisine
$table->integer("post_id"); $table->text("comment");
yazarak tablomuzu en basit hali ile oluşturuyoruz. İstersek (tabi aslında gerekli) comment tablosuna user_id yi de ekleyebiliriz.
Daha sonra
php artisan migrate
oluşturduğumuz migration dosyasını veritabanımıza yazıyoruz.
![One to Many Relation (bireçok ilişki) yapısı](https://www.phphocasi.com.tr2019/01/laravel-eloquent-one-to-many-1024x792.jpg)
Yukarıda yer alan görselde Post model dosyası içerisine Comment modeli ile One To Many ilişkisini sağlayacak olan comments() fonksiyonu yazıyoruz. Bu bağlantıyı sağladıktan sonra kodlarımızda yapmamız gereken sadece
$comments = Post::find(1)->comments()->get();
kodunu yazmak. Bu satır sayesinde yazımıza gelen tüm yorumları listeleyebiliriz. Burada unutmamamız gereken ise bu kod satırının bir array döndürdüğüdür. Yani eğer böyle bir veri ilişkisi sağlarsak oluşan değişkenimizin ekrana basılması için foreach gibi bir döngü kullanmamız gereklidir. Eğer biz post_id yerine yazi_id kullanmak istersek bunun için modelde yer alan comments fonksiyonunda ufak bir değişiklik yapmamız gerek.
return $this->hasMany("AppComment", "yazi_id");
bu değişiklik sonrası tablolarımızda ilişkisel kolonlarımızı belirtmiş olduk.
Laravel Eloquent One to Many Relation Ters Bağlantısı
Bir önceki ilişki yapımızda da belirttiğimiz gibi yazıların yorumlarımı bulabileceğimiz gibi yorumdan da yazıyı bulabiliriz.
![One to Many Relation (bireçok ilişki) yapısı](https://www.phphocasi.com.tr2019/01/laravel-eloquent-one-to-many-2-1024x755.jpg)
Yukarıda yer alan ekran görüntüsünde belongsTo kullandığımızı görebilirsiniz. Bu bir önceki One to One ilişkisi ile aynı değişkendir.
Bu ilişkiyi kodlarımızda
$post = Comment::find(1)->post->title;
şeklinde kullanabilir ve post tablomuzdaki istediğimiz veriye sadece yorum id si kullanarak alabiliriz.
Yine yukarıdaki gibi 2. parametreyi kullabilirsiniz.
Phphocasi.com.tr için yazdığım bu yazımda Laravel Eloquent One to Many Relation yapısından bahsetmeye çalıştım. Daha fazla detaylı bilgi için laravel dökümanından yararlanabilirsiniz.
Tüm Laravel Derslerimiz için tıklayınız.
Phphocasi.com.tr üzerinden yayınladığım laravel eğitimlerine devam edeceğiz. Yazımız ile ilgili tüm sorularınızı yorum bölümden ulaştırabilirsiniz. Bunun dışındaki diğer sorularınız için sorucevap.phphocasi.com.tr sitesini kullanabilirsiniz.
Umarım sizin için yararlı olmuştur. Okuduğunuz için teşekkürler. Daha fazla kişinin okuması için paylaşmayı unutmayın…
27