Laravel Polymorphic One To Many Relation

Merhaba Mobilhanem.com takipçileri,
Bu yazımda sizlere daha önce bahsettiğim one to many ilişkisinin daha karmaşık hali olan Polymorphic One To Many Relation ilişkisini hakkında yazacağım. Bu arada yazdığınız yorumlara teşekkür ederim. Her yorumunuza hızlı bir şekilde cevap vermeye çalışıyorum. Sizin yorumlarınız çok önemli lütfen paylaşım ve yorumlarınızı bizden esirgemeyin.

Laravel Eloquent Polymorphic One To Many Relation Nedir?

Laravel dökümanında verilen örnekten yola çıkalım. Posts, Videos ve Comments olarak 3 ayrı tablomuz olduğunu varsayalım. Bu ilişkide daha önceki yazılarımda yer alan one to many ilişkisi geçerlidir. Sadece farkı bunun iki değil üç tablo arasında kurulan bir ilişki olmasıdır. En önemli ve polymorphic one to one ilişkisinden farklı olarak comments tablosunda aynı post/video a ait birden fazla comment bulunabilir.

Polymorphic One To Many Relation Bağlantısı

Yukarıdaki örnekten devam etmek gerekirse öncelikle bir Post ve bir de Video model ve migration larını hazırlayalım.

 

 

kodunu yazarak Post ve Video adında modeller ve bu modellere bağlı migration dosyalarını oluşturuyoruz. Oluşturduğumuz Post ve Video migration dosyalarının içerisine

 

 

yazarak Post ve Video tablolarını basit bir şekilde oluşturuyoruz. Daha sonra ise Categories tablosunu hazırlamak için

 

 

yazıyor ve migration tablosu içerisine

 

 

yazarak tablomuzu oluşturuyoruz. Comments tablosunda yer alan commentable_id Post veya Video nun id bilgisi olmalı. commentable_type ise ilişkinin oluşturulacağı Model i belirtir.

Şimdi de oluşturduğumuz modeller içinde bu ilişkiyi nasıl sağladığımıza bakalım.

 

Post model dosyası

 

Video model dosyası:

 

Comment model dosyası:

 

Modeller ile elequent bağlantımızı bu şekilde ayarladıktan sonra tabloların veritabanına yazılması için gerekli olan

kodu çalıştırıyoruz.

Yukarıdaki kodları sisteme ekledikten sonra Post ya da Video tablosuna bağlı Comment bilgi ya da bilgilerini çekmek içinse

kodunu kullanabiliriz. Bu şekilde Video ya ait Comment veri ya da verilerini listeleyebiliriz. Dönen veri array şekilde olacağı için buna mutlaka dikkat etmelisiniz

Örnek olarak;

 

polymorphic one to many relation

 

polymorphic one to many relation
polymorphic one to many relation

Polymorphic One To Many Relation Ters Bağlantısı

 

Diğer ilişki çeşitlerinde olduğu gibi bu ilişkide de Post/Video bulduktan sonra Comments bilgisine ulaşabildiğimiz gibi Comments den de Post/Video bilgilerine ulaşabiliriz. (Burada örnek çok mantıklı olmasa da bir yerde işinize yarayabilir)

Bunu yapmak gerekli kod;

Bir önceki polymorphic ilişki de olduğu gibi herhangi bir  Post / Video belirtmeden Comment modelindeki commentable_type ve commentable_id verileri ile istediğimiz bilgilere ulaşıyoruz.

Mobilhanem.com için yazdığım bu yazı umarım yardımcı olur. Daha fazla detaylı bilgi için laravel dökümanından yararlanabilirsiniz.

Tüm Laravel Derslerimiz için tıklayınız.

Mobilhanem.com ü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.mobilhanem.com 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…

Onur Üre

Aslen jeoloji mühendisi olup hiç mesleğini yapmaya fırsat bulamayan ve gönlünde hep bilgisayar ve programlama olan, evden (home-office) çalışma şekline bayılan, evli, 2 kedi ve 1 tavşan babası, sokaktaki her köpek, kedi, kuşun abisi olmayan çalışan biriyim. Lütfen bir kap su bir kap yemek her köşe başına...

Yorum Yaz

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?