执行插入后,我想使用json_encode()将对象传递给客户端。问题是,不包括_id值。
$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);
答案 0 :(得分:43)
相信这就是你所追求的目标。
$widget['_id']->{'$id'};
像这样。
$widget = array('text' => 'Some text');
$this->mongo->db->insert($widget);
$widget['widgetId'] = $widget['_id']->{'$id'};
echo json_encode($widget);
答案 1 :(得分:21)
您也可以使用:
(string)$widget['_id']
答案 2 :(得分:2)
我使用了类似的东西:
(string)$widget->_id
答案 3 :(得分:2)
正确的方法是使用MongoDB中的ObjectId:
function getMongodbIDString($objectId){
$objectId = new \MongoDB\BSON\ObjectId($objectId);
return $objectId->jsonSerialize()['$oid'];
}
并且不要像(string) $row['_id']
或$row->_id->{'$oid'}
那样投射objectId
答案 4 :(得分:1)
我在对象中使用了类似的东西:
$widget->_id->{'$oid'}
或
(string)$widget->_id
或数组:
$widget['id']->{'$oid'}
(string)$widget['_id']