I have two timestamps, edited_at which I created and created_at (Laravel's)...
In database, both have type timestamp and default value 0000-00-00 00:00:00... But
var_dump(edited_at variable)
is giving string. While var_dump(created_at variable)
is object/Carbon. What is wrong with these timestamps?
I have to compare both after converting into integer using format('U'). I can only call this method on Carbon Object. How can I do that?
First, Eloquent automatically converts it's timestamps (created_at
, updated_at
) into carbon objects. You could just use updated_at
to get that nice feature, or specify edited_at
in your model in the $dates
property:
protected $dates = ['edited_at'];
Now back to your actual question. Carbon has a bunch of comparison functions:
eq()
equals
ne()
not equals
gt()
greater than
gte()
greater than or equals
lt()
less than
lte()
less than or equals
Usage:
if($model->edited_at->gt($model->created_at)){
// edited at is newer than created at
}
First, convert the timestamp using the built-in eloquent functionality, as described in this answer.
Then you can just use Carbon's min()
or max()
function for comparison. For example:
$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0);
$dt2 = Carbon::create(2014, 1, 30, 0, 0, 0);
echo $dt1->min($dt2);
This will echo
the lesser of the two dates, which in this case is $dt1
.
See http://carbon.nesbot.com/docs/