Как использовать поле created_at для получения только записей, которые были созданы сегодня, и ни одного дня или времени?
Я думал о ->where('created_at', '>=', Carbon::now()) Но я не уверен, что это сработает.
Как использовать поле created_at для получения только записей, которые были созданы сегодня, и ни одного дня или времени?
Я думал о ->where('created_at', '>=', Carbon::now()) Но я не уверен, что это сработает.
для пользователей Laravel 5. 6+ вы можете просто сделать
$posts = Post::whereDate('created_at', Carbon::today())->get();
Удачного кодирования
Используйте функцию CURDATE Mysql умолчанию, чтобы получить все записи дня.
$records = DB::table('users')->select(DB::raw('*'))
->whereRaw('Date(created_at) = CURDATE()')->get();
dd($record);
Заметка
Разница между Carbon::now и Carbon::today - просто время.
например
Дата, напечатанная через Carbon::now будет выглядеть примерно так:
2018-06-26 07:39:10.804786 UTC (+00:00)
Пока с Carbon::today:
2018-06-26 00:00:00.0 UTC (+00:00)
Чтобы получить единственные записи, созданные сегодня, now можно получить как:
Post::whereDate('created_at', Carbon::now()->format('m/d/Y'))->get();
пока с today:
Post::whereDate('created_at', Carbon::today())->get();
ОБНОВИТЬ
Начиная с версии 5.3, у нас есть предложение по умолчанию whereDate/whereMonth/whereDay/whereYear
$users = User::whereDate('created_at', DB::raw('CURDATE()'))->get();
ИЛИ с фасадом DB
$users = DB::table('users')->whereDate('created_at', DB::raw('CURDATE()'))->get();
Использование вышеперечисленных пунктов
$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"
Если вы используете Carbon (и вы должны, это потрясающе!) с Laravel, вы можете просто сделать следующее:
->where('created_at', '>=', Carbon::today())
Помимо now() и today(), вы также можете использовать yesterday() и tomorrow(), а затем использовать следующее:
startOfDay()/<Т26 > startOfWeek()/endOfWeek()startOfMonth()/endOfMonth()startOfYear()/endOfYear()startOfDecade()/endOfDecade()startOfCentury()/endOfCentury()с углеродом:
return $model->where('created_at', '>=', \Carbon::today()->toDateString());
без углерода:
return $model->where('created_at', '>=', date('Y-m-d').' 00:00:00');
Вы можете использовать whereRaw('date(created_at) = curdate()'), если часовой пояс не является проблемой или whereRaw('date(created_at) = ?', [Carbon::now()->format('Y-m-d')] ) в противном случае.
Так как поле created_at является меткой времени, вам нужно получить только часть даты и игнорировать временную часть.
$today = Carbon\Carbon::now()->format('Y-m-d').'%';
->where('created_at', 'like', $today);
Надеюсь, это поможет вам.
Нет необходимости использовать Carbon::today потому что laravel использует функцию now() вместо этого как вспомогательную функцию
Таким образом, чтобы получить любые записи, которые были созданы сегодня, вы можете использовать следующий код:
Model::whereDay('created_at', now()->day)->get();
Вам нужно использовать whereDate чтобы whereDate будет преобразован в дату.
$ records = User :: where ('creation_at' = CURDATE()) → GET()); печать ($ записей);