У меня есть две метки времени: edited_at, которые я создал, и created_at (Laravel's) ... В базе данных оба имеют метку времени типа и значение по умолчанию 0000-00-00 00:00:00 ... Но
var_dump(edited_at variable)
дает строку. Пока var_dump(created_at variable)
есть объект / Карбон. Что не так с этими отметками времени?
Я должен сравнить оба после преобразования в целое число с использованием формата ('U'). Я могу вызвать этот метод только для Carbon Object. Как я могу это сделать?
laravel
laravel-5
php-carbon
Хасан Сакиб
источник
источник
Ответы:
Во-первых, Eloquent автоматически конвертирует свои временные метки (
created_at
,updated_at
) в углеродные объекты. Вы можете просто использоватьupdated_at
эту замечательную функцию или указатьedited_at
в своей модели в$dates
свойстве:protected $dates = ['edited_at'];
Теперь вернемся к вашему актуальному вопросу. В Carbon есть несколько функций сравнения:
eq()
равноne()
не равноgt()
лучше чемgte()
больше или равноlt()
меньше, чемlte()
меньше или равноПрименение:
if($model->edited_at->gt($model->created_at)){ // edited at is newer than created at }
источник
$date1->toDateString() == $date2->toDateString()
null
в PHPnull
вместо объекта Carbon, и вы получитеcall to a member function lt() on null
.В Carbon есть несколько функций сравнения с мнемоническими именами :
Применение:
if($model->edited_at->greaterThan($model->created_at)){ // edited at is newer than created at }
если вы не уверены, какая у вас версия Carbon, запустите эту
$composer show "nesbot/carbon"
документация: https://carbon.nesbot.com/docs/#api-comparison
источник
Во-первых, преобразуйте метку времени с помощью встроенных красноречивых функций, как описано в этом ответе .
Тогда вы можете просто использовать функцию Carbon
min()
илиmax()
для сравнения. Например:$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0); $dt2 = Carbon::create(2014, 1, 30, 0, 0, 0); echo $dt1->min($dt2);
Это будет
echo
меньшая из двух дат, как в данном случае$dt1
.См. Http://carbon.nesbot.com/docs/
источник
Вот как я сравниваю 2 даты, now () и дату из таблицы
@if (\Carbon\Carbon::now()->lte($item->client->event_date_from)) ..... ..... @endif
Должно работать в самый раз. Я использовал функции сравнения, предоставляемые Carbon.
источник