2016-03-30 19 views
1

Bunu yarın ve bugün doğum günü kullanıcılarını almak sorgusu vardır:laravel olsun kullanıcı bugün ve yarın doğum günü

$birthday[Carbon::now()->format('Y-m-d')] = User::whereRaw("DATE_FORMAT(birthday, '%m-%d') = DATE_FORMAT(now(),'%m-%d')") 
     ->orWhereRaw("DATE_FORMAT(birthday,'%m-%d') = '02-29' and DATE_FORMAT(birthday, '%m') = '02' AND 
     LAST_DAY(NOW()) = DATE(NOW())") 
     ->selectRaw('first_name, last_name, email, birthday') 
     ->get(); 

$birthday[Carbon::now()->addDay()->format('Y-m-d')] = User::whereRaw("DATE_FORMAT(birthday, '%m-%d') = DATE_FORMAT(NOW() + INTERVAL 1 DAY, '%m-%d')") 
     ->orWhereRaw("DATE_FORMAT(birthday,'%m-%d') = '02-29' and DATE_FORMAT(birthday, '%m') = '02' AND 
      LAST_DAY(NOW()) = DATE(NOW())") 
     ->selectRaw('first_name, last_name, email, birthday') 
     ->get(); 

return $birthday; 

sorgu bana bu sonucu verecektir:

{ 
    "2016-03-30": [ 
     { 
      "first_name": "Harmon", 
      "last_name": "Olson", 
      "email": "[email protected]", 
      "birthday": "1990-03-30" 
     }, 
     { 
      "first_name": "John", 
      "last_name": "Doe", 
      "email": "[email protected]", 
      "birthday": "1990-03-30" 
     }, 
    ], 
    "2016-03-31": [ 
     { 
      "first_name": "User10", 
      "last_name": null, 
      "email": "[email protected]", 
      "birthday": "1990-03-31" 
     } 
    ] 
} 

Tabii düzgün çalıştı ve Tam olarak istediğim sonucu al, ama istediğim şeyi elde etmek için sorgumun kısaldığını (sorguyu birleştirin) düşünüyorum.

Herhangi bir öğeyi kısaltmak nasıl?

Şimdiden teşekkürler!

cevap

1

RAW sorguları önleyebilirsiniz:

$birtday['today'] = User::whereDate('birthday', '=', Carbon::today()->toDateString()); 

$birtday['tomorrow'] = User::whereDate('birthday', '=', Carbon::tomorrow()->toDateString()); 
+0

O olacak - Karbon oldukça iyi olanlar yönetir. –

+1

Sorgunuzu denedim, ancak bana boş ver. Sanırım sorgunuz doğum tarihini kesin tarihle kontrol edecek. örnek doğum günü '1990-03-31' ve '2016-03-31' ile kontrol edecek ' – ssuhat

+0

Bu sorgu bugünün kesin tarihini içeren bir doğum günü olup olmadığını kontrol edecektir. – KBeckers

0

bu deneyin:

\App\User::whereRaw("STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(dob), '-', DAY(dob), '%Y-%m-%d') = DATE_ADD(CURDATE(), INTERVAL 0 DAY)")->get(); 

Ya yarın için:

\App\User::whereRaw("STR_TO_DATE(CONCAT(YEAR(CURDATE()), '-', MONTH(dob), '-', DAY(dob), '%Y-%m-%d') = DATE_ADD(CURDATE(), INTERVAL 1 DAY)")->get(); 
İlgili konular