Ответ 1
Поверьте, это то, что вам нужно.
$widget['_id']->{'$id'};
Что-то вроде этого.
$widget = array('text' => 'Some text');
$this->mongo->db->insert($widget);
$widget['widgetId'] = $widget['_id']->{'$id'};
echo json_encode($widget);
После выполнения вставки я хочу передать объект клиенту с помощью 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);
Поверьте, это то, что вам нужно.
$widget['_id']->{'$id'};
Что-то вроде этого.
$widget = array('text' => 'Some text');
$this->mongo->db->insert($widget);
$widget['widgetId'] = $widget['_id']->{'$id'};
echo json_encode($widget);
Вы также можете использовать:
(string)$widget['_id']
Я использовал что-то похожее:
(string)$widget->_id
Я использовал что-то подобное, если object:
$widget->_id->{'$oid'}
или
(string)$widget->_id
или массив:
$widget['id']->{'$oid'}
(string)$widget['_id']
правильно использовать ObjectId из MongoDB:
function getMongodbIDString($objectId){
$objectId = new \MongoDB\BSON\ObjectId($objectId);
return $objectId->jsonSerialize()['$oid'];
}
и не применяйте objectId как (string) $row['_id']
или $row->_id->{'$oid'}