Comment utiliser le champ created_at
Pour obtenir uniquement les enregistrements créés aujourd'hui, sans autre jour ni heure?
Je pensais à une ->where('created_at', '>=', Carbon::now())
mais je ne suis pas sûr que cela fonctionnerait.
pour Laravel 5.6+ utilisateurs, vous pouvez simplement faire
$posts = Post::whereDate('created_at', Carbon::today())->get();
Code heureux
Utilisez la fonction Mysql
par défaut CURDATE
pour obtenir tous les enregistrements de la journée.
$records = DB::table('users')->select(DB::raw('*'))
->whereRaw('Date(created_at) = CURDATE()')->get();
dd($record);
Remarque
La différence entre Carbon::now
Vs Carbon::today
Est juste le temps.
par exemple
La date imprimée avec Carbon::now
Ressemblera à quelque chose:
2018-06-26 07:39:10.804786 UTC (+00:00)
Alors que avec Carbon::today
:
2018-06-26 00:00:00.0 UTC (+00:00)
Pour obtenir les seuls enregistrements créés aujourd'hui avec now
, procédez comme suit:
Post::whereDate('created_at', Carbon::now()->format('m/d/Y'))->get();
avec today
:
Post::whereDate('created_at', Carbon::today())->get();
[~ # ~] met à jour [~ # ~]
À partir de laravel 5.3, Nous avons la clause default où whereDate / whereMonth / whereDay / whereYear
$users = User::whereDate('created_at', DB::raw('CURDATE()'))->get();
OU avec la façade DB
$users = DB::table('users')->whereDate('created_at', DB::raw('CURDATE()'))->get();
Utilisation des clauses where énumérées ci-dessus
$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"
Si vous utilisez Carbon (et vous devriez, c'est génial!) Avec Laravel, vous pouvez simplement faire ce qui suit:
->where('created_at', '>=', Carbon::today())
Outre now()
et today()
, vous pouvez également utiliser yesterday()
et tomorrow()
, puis les éléments suivants:
startOfDay()
/endOfDay()
startOfWeek()
/endOfWeek()
startOfMonth()
/endOfMonth()
startOfYear()
/endOfYear()
startOfDecade()
/endOfDecade()
startOfCentury()
/endOfCentury()
avec du carbone:
return $model->where('created_at', '>=', \Carbon::today()->toDateString());
sans carbone:
return $model->where('created_at', '>=', date('Y-m-d').' 00:00:00');
Vous pouvez utiliser whereRaw('date(created_at) = curdate()')
si le fuseau horaire n'est pas une préoccupation ou whereRaw('date(created_at) = ?', [Carbon::now()->format('Y-m-d')] )
sinon.
Depuis le created_at
_ champ est un horodatage, vous devez obtenir uniquement la partie date et ignorer la partie heure.
$today = Carbon\Carbon::now()->format('Y-m-d').'%';
->where('created_at', 'like', $today);
J'espère que cela vous aidera