Как сравнить две временные метки углерода?
У меня есть две временные метки, edit_at, которые я создал и создал_at (Laravel's)...
В базе данных есть временная метка типа и значение по умолчанию 0000-00-00 00:00:00... Но
var_dump(edited_at variable)
задает строку. Пока var_dump(created_at variable)
- объект/углерод. Что не так с этими временными метками?
Мне нужно сравнить как после преобразования в целое число с использованием формата ('U'). Я могу назвать этот метод только для объекта Carbon. Как я могу это сделать?
Ответы
Ответ 1
Во-первых, Eloquent автоматически преобразует метки времени (created_at
, updated_at
) в объекты углерода. Вы можете просто использовать updated_at
для получения этой приятной функции или указать edited_at
в своей модели в свойстве $dates
:
protected $dates = ['edited_at'];
Теперь вернемся к вашему актуальному вопросу. У углерода есть куча функций сравнения:
-
eq()
равно
-
ne()
не равно
-
gt()
больше
-
gte()
больше или равно
-
lt()
меньше
-
lte()
меньше или равно
Использование:
if($model->edited_at->gt($model->created_at)){
// edited at is newer than created at
}
Ответ 2
Сначала преобразуйте временную метку с помощью встроенной функциональности redoquent, как описано в этом ответе.
Затем вы можете просто использовать функцию 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/