В моем проекте Laravel у меня есть таблица базы данных MySQL со следующим столбцом:
| requested_at |
2018-02-03 12:00:00
2018-03-03 11:00:00
Я хочу получить все элементы из этого столбца, для которых метка времени (required_at) старше 60 дней:
$now = Carbon::now ();
$60days = DB::table('exampletable')->where('requested_at', '=', $now->subDays(60))->get();
Для моего следующего кода мне нужно отформатировать формат даты из моего столбца requested at.
Я только хочу получить дату, как этот 2018-03-03, без времени.
Я экспериментирую с некоторыми углеродными методами, но это совсем не сработало:
$format60 = Carbon::createFromFormat('Y-m-d', $60days);






Кажется, вы используете тип TIMESTAMP, поэтому
->where('requested_at', '<=', now()->subDays(60)->startOfDay())->get();
Как видите, нет необходимости форматировать экземпляр Carbon.
Разбейте все на части:
now() // Laravel helper to get Carbon::now()
->subDays(60) // subtract 60 days
->startOfDay() // set time part of timestamp to start of the day
Note: add
requested_atinto$datesarray in your model for easier use
К вашему сведению, ваша переменная
$60daysнедействительна, переменные должен начинаются с символа подчеркивания ИЛИ ЖЕ буквы. Что касается углеродной части, она должна выглядеть примерно так:Carbon::createFromFormat('Y-m-d', $days60['FIELD THAT HAS YOUR TIME VALUE']);- обратите внимание, я изменил имя вашей переменной.