2015-10-20 29 views

Odpowiedz

28

Użyj domyślnej funkcji Mysql, aby uzyskać wszystkie zapisy dnia.

$records = DB::table('users')->select(DB::raw('*')) 
        ->whereRaw('Date(created_at) = CURDATE()')->get(); 
    dd($record); 

UPDATE

Od laravel 5.3, gdzie mamy domyślnego klauzula whereDate/whereMonth/whereDay/whereYear

$users = User::whereDate('created_at', DB::raw('CURDATE()'))->get(); 

lub DB elewacji

$users = DB::table('users')->whereDate('created_at', DB::raw('CURDATE()'))->get(); 

Wykorzystanie powyższego l isted gdzie klauzule

$users = User::whereMonth('created_at', date('m'))->get(); 
//or you could also just use $carbon = \Carbon\Carbon::now(); $carbon->month; 
//select * from `users` where month(`created_at`) = "04" 
$users = User::whereDay('created_at', date('d'))->get(); 
//or you could also just use $carbon = \Carbon\Carbon::now(); $carbon->day; 
//select * from `users` where day(`created_at`) = "03" 
$users = User::whereYear('created_at', date('Y'))->get(); 
//or you could also just use $carbon = \Carbon\Carbon::now(); $carbon->year; 
//select * from `users` where year(`created_at`) = "2017" 

Query Builder Docs

+0

To trwa wczoraj, a dziś i jutro. – TheWebs

+0

@ KyleAdams Edytowałem mój kod i przetestowałem go teraz nie ma błędów ... –

+0

@BasheerAhmed Twój edytowany kod jest taki sam jak moja odpowiedź. ;) –

5

Możesz użyć whereRaw('date(created_at) = curdate()'), jeśli strefa czasowa nie jest problemem lub whereRaw('date(created_at) = ?', [Carbon::now()->format('Y-m-d')]) w przeciwnym razie.

Ponieważ pole created_at jest znacznikiem czasu, należy uzyskać tylko jego część daty i zignorować część czasu.

+0

'Argument 2 przeszedł do oświetlania \ database \ Zapytanie \ Builder :: whereRaw() musi być typu array, string given' – TheWebs

+0

Ups.Edytowałem swoją odpowiedź. –

2
$today = Carbon\Carbon::now()->format('Y-m-d').'%'; 
->where('created_at', 'like', $today); 

nadzieję, że pomoże Ci

7

węglem:

return $model->where('created_at', '>=', \Carbon::today()->toDateString()); 

bez węgla:

return $model->where('created_at', '>=', date('Y-m-d').' 00:00:00'); 
+0

Użyłem drugiej opcji, aby utworzyć zakres dla wszystkich spotkań występujących dzisiaj. –

17

Jeśli używasz węgla (a powinieneś, to niesamowite!) Z laravel, wystarczy wykonać następujące czynności:

->where('created_at', '>=', Carbon::today()) 

Poza now() i today(), można również użyć yesterday() i tomorrow() a następnie użyj następujące:

  • startOfDay()/endOfDay()
  • startOfWeek()/endOfWeek()
  • startOfMonth()/endOfMonth()
  • startOfYear()/endOfYear()
  • startOfDecade()/endOfDecade()
  • startOfCentury()/endOfCentury()