• 17-01-2021, 00:17:49
    #1
    Selamlar,
    whereBetween ile yıllara göre listeleme yapıyorum. Ancak bir tutarsızlık oluşuyor. Şöyle örnekle açıklayabilirim.
    Bir film sitesi olduğunu var sayalım. Filmlerin listelendiği bir sayfa var ve bu sayfada filmleri yıllarına göre aralık vererek listeliyorum. [2012, 2015] filtrelendiğinde 2012 yapımı filmler dahil olmak üzere 2012 filmlerden başlayarak, 2013, 2014 ve 2015 filmleri dahil olmak üzere, 2015 yapımı filmler listeleniyor.
    Ancak bu sorgum bazen doğru sonuç verirken bazen yanlış sonuç veriyor. Acaba nerede yanlış yapıyorum?
    Denediğim farklı birkaç varyasyondan 2 tanesi şöyle mesela:
    1:
    if($startYear || $endYear){
                $query
               ->whereBetween('year', [$startYear, $endYear])
               ->get();            
    }
    2:
    if($startYear){
    $query->where('year', '>=', $startYear);
    }
    if($endYear){
    $query->where('year', '<=', $endYear);
    }
  • 17-01-2021, 09:21:48
    #2
    bence şu startyear veya endyear 2 sinden biri veya 2 si yanlış geliyor yoksa sorgu düzgün gibi.
  • 19-01-2021, 18:39:06
    #3
    Efe4ka adlı üyeden alıntı: mesajı görüntüle
    bence şu startyear veya endyear 2 sinden biri veya 2 si yanlış geliyor yoksa sorgu düzgün gibi.
    kontrol ettiğimde İkisi de doğru geliyor aslında. Çok saçma ama aslında hepsi doğru geliyor. Başka bir yerde bir sorun var mutlaka gözden kaçan
  • 24-01-2021, 01:55:11
    #4
    geçenlerde mysql ile tarih aralığı vermek istedim. DATE(created_at) between "2020-01-01" and "2020-12-31" şeklinde koşul eklediğimde doğru sonuç vermedi. sizin yaptığınız şekilde <= ve >= şeklinde yapınca doğru sonuç aldım. 2. sonucun daha kesin tutarlı sonuç vereceğini söyleyebilirim. ayrıca şunu yapmanızı önerebilirim:

    $query->whereYear('date', '>=', '2012')->whereYear('date', '<=', '2015');
  • 27-01-2021, 18:50:54
    #5
    Burada aslında yaşadığım sorun sliderrange js ile çok fazla sorgu yapılmasından kaynaklanıyormuş. Timer ile bu sorunu çözdük. Cevaplar için teşekkürler..