Merhaba
Laravel de one to many ilişkisi kullanarak veri çekebiliyorum. Fakat yazarın kitaplarının toplam fiyatını tüm yazarları listelerken gösteremedim. Yazarlar tablosunda toplam maliyet yazacak. find(id) yapınca kolayca elde edebiliyorum ama hepsini listelediğim sayfada gösteremedim.
Laravel one to many veri çekme yaa
4
●341
- 06-03-2019, 22:59:10
- 07-03-2019, 18:48:35Yazar modelinize;
public function toplamFiyat(){ return $this->hasMany('App/Kitap','yazar','id'); // Kitap modelinizdeki yazar sütunuyla Yazar modelinizdeki ID yi eşleştirme }Blade dosyanıza yazarları listelerken oluşturduğunuz döngü içinde;
@foreach($yazarlar as $yazar) {{ $yazar->toplamFiyat->sum('kitapFiyati') }} // toplamFiyat fonksiyonu yazara ait bütün kitapları çeker, sum('kitapFiyati') çekilen verilerdeki bütün kitapFiyat bilgisini toplamını hesaplar.. @endforeachŞeklinde düşünebilirsiniz. - 08-03-2019, 08:13:08tesekkurler hocam onu bu sekilde hallettim ama benzer bir durum var. kitaplar tablosundaki birim fiyat ve toplam adetleri carpip toplayip yazar listesinde nasil gosterebilirim. Veriyi cekip viewde gosteriyorum ama her kitabin maliyetini ayri ayri gosteriyor.strawz adlı üyeden alıntı: mesajı görüntüle
- 08-03-2019, 08:39:39Bu hesaplama işleminide 3 şekilde halledebilirsiniz.farukbugur adlı üyeden alıntı: mesajı görüntüle
1. Seçenek: Model dosyanıza yine kendiniz oluşturacağınız bir fonksiyonla return birimFiyati * adet
2. Seçenek: Controller dosyanızda değerleri çekip yine birimFiyati * adet şeklinde bir hesaplatma yapabilir ve with ile blade dosyanıza aktarabilirsiniz.
3. Seçenek: Yine blade dosyanızda döngü içinde kitapları listelerken bu hesaplatmayı yapabilirsiniz.
En sağlıklısı model dosyasında fonksiyon oluşturmak gibi görünüyor ama yinede diğer seçeneklerinde bir zararı olacağını düşünmüyorum. En basiti blade dosyanızda döngü içinde {{ $kitap->birimFiyat * $kitap->adet }} şeklinde olacaktır.
Not: Bu zamana kadar bu şekilde bir ihtiyacım olmadığı için bu konuyla ilgili olarak laravelin sağladığı imkanları araştırmadım. Muhtemelen daha bir basit çözüm yoluda olabilir. Bir önceki sorunuzda olduğu gibi sum() fonksiyonu tarzı bişey vardır. SQL sorgusunda hesaplatma işlemleri yapıldığına göre laravelin ORM yapısında olacağına eminim. Araştırmanızı tavsiye ederim. - 08-03-2019, 23:41:14toplatilirda listelerken her yazarin idsine maliyet sonucu donguye koymak olmuyor.strawz adlı üyeden alıntı: mesajı görüntüle