• 06-03-2019, 22:59:10
    #1
    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.
  • 07-03-2019, 18:48:35
    #2
    Yazar 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:08
    #3
    strawz adlı üyeden alıntı: mesajı görüntüle
    Yazar 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.
    tesekkurler 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.
  • 08-03-2019, 08:39:39
    #4
    farukbugur adlı üyeden alıntı: mesajı görüntüle
    tesekkurler 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.
    Bu hesaplama işleminide 3 şekilde halledebilirsiniz.

    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:14
    #5
    strawz adlı üyeden alıntı: mesajı görüntüle
    Bu hesaplama işleminide 3 şekilde halledebilirsiniz.

    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.
    toplatilirda listelerken her yazarin idsine maliyet sonucu donguye koymak olmuyor.