12

完成插入后,我想使用 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);
4

5 回答 5

45

相信这就是你所追求的。

$widget['_id']->{'$id'};

像这样的东西。

$widget = array('text' => 'Some text');
$this->mongo->db->insert($widget);
$widget['widgetId'] = $widget['_id']->{'$id'};
echo json_encode($widget);
于 2011-10-28T06:36:39.470 回答
23

您还可以使用:

(string)$widget['_id']
于 2013-01-14T20:16:13.657 回答
5

正确的方法是使用 MongoDB 中的 ObjectId:

function getMongodbIDString($objectId){
    $objectId = new \MongoDB\BSON\ObjectId($objectId);
    return $objectId->jsonSerialize()['$oid'];
}

并且不要像(string) $row['_id']$row->_id->{'$oid'}

于 2019-09-25T18:04:50.107 回答
2

我使用了类似的东西:

(string)$widget->_id
于 2013-07-09T11:59:35.450 回答
1

我使用了类似的 if 对象:

$widget->_id->{'$oid'}

或者

(string)$widget->_id

或数组:

$widget['id']->{'$oid'}
(string)$widget['_id']
于 2018-02-06T09:04:57.020 回答