After doing an insert I want to pass the object to the client using json_encode(). The problem is, the _id value is not included.
$widget = array('text' => 'Some text');
$this->mongo->db->insert($widget);
If I echo $widget['_id'] the string value gets displays on the screen, but I want to do something like this:
$widget['widgetId'] = $widget['_id']->id;
So I can do json_encode() and include the widget id:
echo json_encode($widget);
Believe this is what you're after.
$widget['_id']->{'$id'};
Something like this.
$widget = array('text' => 'Some text');
$this->mongo->db->insert($widget);
$widget['widgetId'] = $widget['_id']->{'$id'};
echo json_encode($widget);
You can also use:
(string)$widget['_id']
Abilash
I used something similar:
(string)$widget->_id
correct way is use ObjectId from MongoDB:
function getMongodbIDString($objectId){
$objectId = new \MongoDB\BSON\ObjectId($objectId);
return $objectId->jsonSerialize()['$oid'];
}
and do not cast the objectId like (string) $row['_id']
or $row->_id->{'$oid'}
I used something similar if object:
$widget->_id->{'$oid'}
or
(string)$widget->_id
or array :
$widget['id']->{'$oid'}
(string)$widget['_id']
来源:https://stackoverflow.com/questions/7861332/how-do-you-get-the-string-value-of-a-mongoid-using-php