• 26-01-2023, 23:21:36
    #1
    3 Tablomu Hasmany ile İlişkilendirildiği bir veri topluluğum var. kısaca Ürünler,satislar,tahsilatlar
    Satislar modelinde
        public function tahsilatlar()
        {
            return $this->hasMany('App\Models\tahsilatlar','satis_id','id');
        }
    şeklinde Tahsilatlarımı Satışlar tabloma ekliyorum
    Ürünler Modelinde ise
        public function satislar()
        {
            return $this->hasMany('App\Models\satislar','urun_id','id')->with('tahsilatlar');
        }
    şeklinde satışlarımın ve tahsilatlarımın Olduğu Verileri Ürünlerin ana bilgisinin olduğu Verilere ekleyerek. 3 lü şekilde tabloları birbiriyle ilişkilendiriyorum.
    Her Satış için birden fazla tahsilat olabiliyor. ben tahsilatlar tablosunda Her satış için ayrı olarak tahsilatları toplattırıp Verilere eklemesini İstiyorum. Bunu Foreach Vs. İle Yapabilirim Fakat Laravel İle tahsilat Modeli Altında "Tahsilat_tutar" Verisini Mysql'ın SUM işleviyle Toplattırıp Verilere Eklemek İstiyorum. Bunu Nasıl Yapabilirim?
  • 28-01-2023, 01:01:45
    #2
    Hocam bu kodu dener misiniz

    $data = Tahsilat::with('satislar')
        ->select('Tahsilat_tutar', DB::raw('sum(Tahsilat_tutar) as total'))
        ->get();
  • 29-01-2023, 15:01:33
    #3
    Laravel'de Eloquent ile verilerinizi toplamak için kullanabileceğiniz birkaç yol var. Örneğin, aşağıdaki gibi bir sorgu yazabilirsiniz:
    $tahsilat_toplami = Tahsilat::where('satis_id', $satis_id)->sum('tahsilat_tutar');
    Bu sorgu, belirli bir satış için tahsilatlar tablosundaki "tahsilat_tutar" sütununun toplamını döndürür. Aynı şekilde, satışlar ve ürünler modellerinizi kullanarak da tahsilatlar tablosundaki verileri toplamak için Eloquent ile sorgu yazabilirsiniz. Örneğin, aşağıdaki gibi bir sorgu yazabilirsiniz:
    $urun = Urun::find($urun_id);
    $tahsilat_toplami = $urun->satislar->sum(function ($satislar) {
        return $satislar->tahsilatlar->sum('tahsilat_tutar');
    });
    Bu sorgu, belirli bir ürün için satışlar tablosundaki verileri kullanarak tahsilatlar tablosundaki "tahsilat_tutar" sütununun toplamını döndürür. Bu yolları kullanarak verilerinizi toplayabilirsiniz.


    Ayrıca;

    "Tahsilat_tutar" verisini Mysql'ın SUM işleviyle toplattırıp verilere eklemek için, satışlar modelinde tahsilatlar relasyonunu tanımlarken, "tahsilatlar" metodunu kullanarak join yapabilir ve "Tahsilat_tutar" verisini SUM işleviyle toplatabilirsiniz. Örnek olarak aşağıdaki kodu kullanabilirsiniz:
    public function tahsilatlar()
    {
        return $this->hasMany('App\Models\Tahsilatlar', 'satislar_id', 'id')
            ->selectRaw('SUM(Tahsilat_tutar) as total_tahsilat')
            ->groupBy('satislar_id');
    }
    Satışlar modelinde tahsilatlar relasyonunu tanımlarken, "Tahsilat_tutar" verisini SUM işleviyle toplatıp "total_tahsilat" adlı bir sütun olarak ekler. Daha sonra, satışlar modelinde "tahsilatlar" metodunu kullanarak bu veriyi çağırabilirsiniz.
    $satislar = Satislar::with('tahsilatlar')->get();
    foreach($satislar as $satis) {
        echo $satis->tahsilatlar->total_tahsilat;
    }
    Satışlar veri setini alır ve her satış için tahsilatlar verilerinin toplam tutarını yazdırır.
  • 29-01-2023, 16:26:44
    #4
    alit adlı üyeden alıntı: mesajı görüntüle
    Laravel'de Eloquent ile verilerinizi toplamak için kullanabileceğiniz birkaç yol var. Örneğin, aşağıdaki gibi bir sorgu yazabilirsiniz:
    $tahsilat_toplami = Tahsilat::where('satis_id', $satis_id)->sum('tahsilat_tutar');
    Bu sorgu, belirli bir satış için tahsilatlar tablosundaki "tahsilat_tutar" sütununun toplamını döndürür. Aynı şekilde, satışlar ve ürünler modellerinizi kullanarak da tahsilatlar tablosundaki verileri toplamak için Eloquent ile sorgu yazabilirsiniz. Örneğin, aşağıdaki gibi bir sorgu yazabilirsiniz:
    $urun = Urun::find($urun_id);
    $tahsilat_toplami = $urun->satislar->sum(function ($satislar) {
        return $satislar->tahsilatlar->sum('tahsilat_tutar');
    });
    Bu sorgu, belirli bir ürün için satışlar tablosundaki verileri kullanarak tahsilatlar tablosundaki "tahsilat_tutar" sütununun toplamını döndürür. Bu yolları kullanarak verilerinizi toplayabilirsiniz.


    Ayrıca;

    "Tahsilat_tutar" verisini Mysql'ın SUM işleviyle toplattırıp verilere eklemek için, satışlar modelinde tahsilatlar relasyonunu tanımlarken, "tahsilatlar" metodunu kullanarak join yapabilir ve "Tahsilat_tutar" verisini SUM işleviyle toplatabilirsiniz. Örnek olarak aşağıdaki kodu kullanabilirsiniz:
    public function tahsilatlar()
    {
        return $this->hasMany('App\Models\Tahsilatlar', 'satislar_id', 'id')
            ->selectRaw('SUM(Tahsilat_tutar) as total_tahsilat')
            ->groupBy('satislar_id');
    }
    Satışlar modelinde tahsilatlar relasyonunu tanımlarken, "Tahsilat_tutar" verisini SUM işleviyle toplatıp "total_tahsilat" adlı bir sütun olarak ekler. Daha sonra, satışlar modelinde "tahsilatlar" metodunu kullanarak bu veriyi çağırabilirsiniz.
    $satislar = Satislar::with('tahsilatlar')->get();
    foreach($satislar as $satis) {
        echo $satis->tahsilatlar->total_tahsilat;
    }
    Satışlar veri setini alır ve her satış için tahsilatlar verilerinin toplam tutarını yazdırır.
    satislar modelinde şu şekil Hersatışın Tahsilatını Toplattırmayı Konuyu açtığım gün Şu Şekilde çözebilmiştim
        public function tahsilattoplam()
        {
            return $this->hasOne('App\Models\tahsilatlar','satis_id','id')->selectRaw('tahsilatlars.satis_id,SUM(tahsilatlars.tahsilat_tutar) as total')->groupBy('tahsilatlars.satis_id');
        }
    ama şöyle bir sıkıntı var., selectRaw İçerisinde "tahsilatlars.satis_id," Değerini Vermediğim Sürece Tahsilatlartoplam verisi boş Geliyor.
    Son Olarak Tahsilatların Türüne görede bir toplattırma işlemi yapmak istiyorum fakat iki Kere Groupby Kullanamıyorum. Veya tek groupby kullansam bile sadece direk 'odeme_turu' verisi ile gruplandırmaya çalıştığımda odeme_turu bulunamadı şeklinde hata alıyorum. Bu İşlemlerin Tamamını Normal Sorgularla yapabiliyorum fakat, Model'leri Tam Verimli Şekilde Kolay Anlaşılır Şekilde Yapmak İstiyorum.
    Yani kısaca Yapmak İstediğim Her satış id'sinin İçerisindeki Ödeme Türlerine göre Toplam tahsilat Tutarlarını Toplattırmak. ve bunu model içerisinde HasMany İle Yapmak.
  • 29-01-2023, 16:44:52
    #5
    hares adlı üyeden alıntı: mesajı görüntüle
    satislar modelinde şu şekil Hersatışın Tahsilatını Toplattırmayı Konuyu açtığım gün Şu Şekilde çözebilmiştim
        public function tahsilattoplam()
        {
            return $this->hasOne('App\Models\tahsilatlar','satis_id','id')->selectRaw('tahsilatlars.satis_id,SUM(tahsilatlars.tahsilat_tutar) as total')->groupBy('tahsilatlars.satis_id');
        }
    ama şöyle bir sıkıntı var., selectRaw İçerisinde "tahsilatlars.satis_id," Değerini Vermediğim Sürece Tahsilatlartoplam verisi boş Geliyor.
    Son Olarak Tahsilatların Türüne görede bir toplattırma işlemi yapmak istiyorum fakat iki Kere Groupby Kullanamıyorum. Veya tek groupby kullansam bile sadece direk 'odeme_turu' verisi ile gruplandırmaya çalıştığımda odeme_turu bulunamadı şeklinde hata alıyorum. Bu İşlemlerin Tamamını Normal Sorgularla yapabiliyorum fakat, Model'leri Tam Verimli Şekilde Kolay Anlaşılır Şekilde Yapmak İstiyorum.
    Yani kısaca Yapmak İstediğim Her satış id'sinin İçerisindeki Ödeme Türlerine göre Toplam tahsilat Tutarlarını Toplattırmak. ve bunu model içerisinde HasMany İle Yapmak.
    Elde edilmek istenen sonuçların satış ID'lerine göre gruplandırılması gerektiği için, yapılması gereken işlem aşağıdaki gibidir:
    public function tahsilatTurToplam()
    {
        return $this->hasMany('App\Models\tahsilatlar','satis_id','id')
                    ->selectRaw('odeme_turu, SUM(tahsilat_tutar) as total')
                    ->groupBy('odeme_turu');
    }
    Bu şekilde, her satış ID'si için ayrı ayrı odeme türüne göre tahsilat toplamı verisi elde edilebilir.
  • 29-01-2023, 17:13:00
    #6
    alit adlı üyeden alıntı: mesajı görüntüle
    Elde edilmek istenen sonuçların satış ID'lerine göre gruplandırılması gerektiği için, yapılması gereken işlem aşağıdaki gibidir:
    public function tahsilatTurToplam()
    {
        return $this->hasMany('App\Models\tahsilatlar','satis_id','id')
                    ->selectRaw('odeme_turu, SUM(tahsilat_tutar) as total')
                    ->groupBy('odeme_turu');
    }
    Bu şekilde, her satış ID'si için ayrı ayrı odeme türüne göre tahsilat toplamı verisi elde edilebilir.
    Bu Şekilde Yapmayıda Denedim Boş Veri Dönüyor.
    satis modeli şu şekilde
        public function tahsilatTurToplam()
        {
            return $this->hasMany('App\Models\tahsilatlar','satis_id','id')
                        ->selectRaw('tahsilatlars.odeme_turu, SUM(tahsilatlars.tahsilat_tutar) as total')
                        ->groupBy('tahsilatlars.odeme_turu');
        }
    urunler Modeli Şu Şekilde
        public function satislar()
        {
            return $this->hasMany('App\Models\satislar','urun_id','id')->with('musteri')->with('tahsilatlar')->with('tahsilatTurToplam');
        }
    controllerda Şu Şekilde Çekiyorum
            $satislar = urunler::with('satislar')->get()->toArray();
    Herşey Doğru Gözüküyor Fakat Veri Boş Dönüyor. Google'da Denemediğim Yol Kalmadı.
  • 29-01-2023, 17:16:43
    #7
    hares adlı üyeden alıntı: mesajı görüntüle
    Bu Şekilde Yapmayıda Denedim Boş Veri Dönüyor.
    satis modeli şu şekilde
        public function tahsilatTurToplam()
        {
            return $this->hasMany('App\Models\tahsilatlar','satis_id','id')
                        ->selectRaw('tahsilatlars.odeme_turu, SUM(tahsilatlars.tahsilat_tutar) as total')
                        ->groupBy('tahsilatlars.odeme_turu');
        }
    urunler Modeli Şu Şekilde
        public function satislar()
        {
            return $this->hasMany('App\Models\satislar','urun_id','id')->with('musteri')->with('tahsilatlar')->with('tahsilatTurToplam');
        }
    controllerda Şu Şekilde Çekiyorum
            $satislar = urunler::with('satislar')->get()->toArray();
    Herşey Doğru Gözüküyor Fakat Veri Boş Dönüyor. Google'da Denemediğim Yol Kalmadı.
    Boş dönüyorsa urunler tablosunda veri olmayabilir.
  • 29-01-2023, 17:19:14
    #8
    alit adlı üyeden alıntı: mesajı görüntüle
    Boş dönüyorsa urunler tablosunda veri olmayabilir.
    İçinde Veri Var aynı işlemi Groupby('satis_id') Şeklinde Yaptığım Zaman Her Satış İçin Verileri Topluyor Ama Groupby('odeme_turu') Yaptığımda Sonuç Alamıyorum. 2 Gündür Uğraşıyorum Hala Çözemedim.
  • 29-01-2023, 17:20:34
    #9
    hares adlı üyeden alıntı: mesajı görüntüle
    İçinde Veri Var aynı işlemi Groupby('satis_id') Şeklinde Yaptığım Zaman Her Satış İçin Verileri Topluyor Ama Groupby('odeme_turu') Yaptığımda Sonuç Alamıyorum. 2 Gündür Uğraşıyorum Hala Çözemedim.
    Bu durumda, tahsilatTurToplam metodunun doğru gruplandığından ve odeme_turu değişkeninin doğru değerleri içerdiğinden emin olun. Ayrıca, tahsilatlar tablosunda, odeme_turu sütununun her kayıt için doldurulduğundan ve hiç boş kayıt bulunmadığından emin olun. Eğer bu kontroller yapıldı ve hala veri dönmemesi sorunu devam ediyorsa, sorguyla ilgili başka bir sorun olabilir ve tekrar gözden geçirilmesi gerekmektedir.