I have a question, but can't find an answer. So now I ask everyone to answer for me. If the question is not reasonable, please forgive me.
I am doing MongoBD with Laravel. My updatedAt
field is saved as timestamp 1606789482
type (int 32)
, and when I retrieve the data it will be as object(Illuminate\Support\Carbon)
:
public function update(Request $request)
{
$prodcut = Product::where('_id', '=', $request->data['_id'])->first()->toArray();
dd($prodcut['updatedAt']);
// result:
//object(Illuminate\Support\Carbon)#1433 (3) {
//["date"]=>
//string(26) "2022-08-10 15:30:33.000000"
//["timezone_type"]=>
//int(3)
//["timezone"]=>
//string(3) "UTC"
//}
}
But for some reason some of my productions save updatedAt
as ISODate("2013-10-01T00:00:00.000Z")
type (date)
. And when I get updatedAt it looks like this:
object(Carbon\Carbon)#1377 (3) {
["date"]=>
string(26) "2013-10-01 00:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(3) "UTC"
}
Is there a way to distinguish between object(Illuminate\Support\Carbon)
and object(Carbon\Carbon)
?
Because when updating most successfully, But some products with updatedAt with type date
got an error: Object of class Carbon\\Carbon could not be converted to int
!
So I want to check if it is date
ISODate
then I will remove updatedAt
before updating. Please give me your opinion. Thanks.
CodePudding user response:
You can try something like this:
public function isIlluminateCarbon($param): bool
{
return (bool) ($param instanceof \Illuminate\Support\Carbon);
}
public function isCarbonCarbon($param): bool
{
return (bool) ($param instanceof \Carbon\Carbon);
}
// Call methods
if ($this->isIlluminateCarbon($values)) {
// is \Illuminate\Support\Carbon
}
if ($this->isCarbonCarbon($values)) {
// is \Carbon\Carbon
}