Giriş yapmadınız.

#1 11.01.2019 09:36:43

Kevin-Mitnick
Üye
Kayıtlı: 26.05.2016
Mesajlar: 483

Modelde count hesaplama

Selamlar projemin bir yerinde takılmış durumdayım .  Olay şu  ilan ve teklif tablom var .
http://prntscr.com/m5pcab

Bu şekilde oradaki durum kolono eğer kullanıcı bu teklifi kabul etmiş ise 1 oluyor.

Teklifin tamamlandığını ise teklifler tablosunda durum satırı 4 olunca anlıyoruz.
http://prntscr.com/m5pd8a

Bir teklif bir iş ilanına baplı olduğundan arada belongto var teklif ilana ait anlamında.

Şimdi benim bunu demem gerekiyor                 


 $biten_isler = Teklif::with('is_ilani')
                ->where('user_id',$id)
                ->where('durum',1)
                ->get();

burda userin kabul edilmiş işlerini çekiyorum . Fakat is_ilani tablosuna gidip birde durumunun 4 olup  yani userin o işi tamamlamış olması gerekiyor.Benim bunun toplamını almam lazım . Ama modelde yapmaya çalışıyorum . Pratik yapmak amacıyla accessor denen olayla kısaca . normalde şuan joinle aldım ama bu yolu öğrenmek istiyorum . Teşekkürler.


Mister Koder

Çevrimdışı

#2 11.01.2019 11:52:03

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,641
Website

Yanıt: Modelde count hesaplama

$biten_isler = Teklif::with(['is_ilani' => function ($query) {
    $query->where('durum', 4);
}])
    ->where('user_id', $id)
    ->where('durum', 1)
    ->get();

Bakacağınız yer:
https://laravel.com/docs/5.7/eloquent-r … er-loading

Düzeltme:
Yanlış anlamışım sanırım. İstediğiniz sadece is_ilanı durumu 4 olan teklifler ise:

$biten_isler = Teklif::whereHas('is_ilani' => function ($query) {
    $query->where('durum', 4);
})
    ->where('user_id', $id)
    ->where('durum', 1)
    ->get();

Çevrimdışı

#3 11.01.2019 12:43:26

Kevin-Mitnick
Üye
Kayıtlı: 26.05.2016
Mesajlar: 483

Yanıt: Modelde count hesaplama

 $biten_isler =  Teklif::with(['is_ilani' => function ($query) {
                $query->where('durum',4);
            }])
                ->where('user_id', $id)
                ->where('durum',1)
            ->get();

@mgsmus hocam öncelikle teşekkür ediyorum fakat  sonuç

Ama 3 tane sonuç dönüyor onlarda teklif tablosundaki durumu 1 olanlar.

Normalde 1 tane dönmesi lazım durumu 1 ve  ilan tablosunda durumu 4 bir kayıt var.

      $test =   \DB::table('teklif')
                ->join('is_ilani', 'teklif.ilan_id', '=', 'is_ilani.id')
                ->select('is_ilani.proje_basligi as baslik', \DB::raw("count(teklif.ilan_id) as count"))
                ->where('is_ilani.durum','=','4')
                ->where('teklif.durum','=','1')
                ->where('teklif.user_id','=',$id)
                ->groupBy('teklif.id')
                ->get();

  uzun yolu bu

Son düzenleyen Kevin-Mitnick (11.01.2019 13:14:35)


Mister Koder

Çevrimdışı

#4 11.01.2019 13:20:03

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,641
Website

Yanıt: Modelde count hesaplama

$query->where('is_ilani.durum',4);

şeklinde dener misiniz. Her iki tabloda da durum aynı isimde olduğu için karışıyor olabilir. whereHas sütunlara tablo ismini otomatik ekliyor muydu hatırlamıyorum.

Çevrimdışı

#5 11.01.2019 13:22:27

Kevin-Mitnick
Üye
Kayıtlı: 26.05.2016
Mesajlar: 483

Yanıt: Modelde count hesaplama

malesef hocam aslında onuda denemiştim 3 kayıt geliyor halen.


Mister Koder

Çevrimdışı

#6 11.01.2019 15:57:45

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,641
Website

Yanıt: Modelde count hesaplama

$biten_isler = Teklif::where('user_id', $id)
    ->where('durum', 1)
    ->whereHas('is_ilani' => function ($query) {
        $query->where('durum', 4);
    })
    ->get();

Bu şekilde deneyin

Çevrimdışı

Forum alt kısmı