У меня проблема с извлечением ObjectID из базы данных MongoDB, но значение _id всегда исчезает при запуске через json_encode. Все остальные данные в моем массиве присутствуют. Мой код как таковой:
$data = array('_id' => new MongoDB\BSON\ObjectID(), 'title' => 'abc123');
//ID Is there!
print_r($data);
//ID IS EMPTTYy!!!
print_r(json_encode($data));
exit();
Результаты выглядят так:
Array ( [_id] => MongoDB\BSON\ObjectID Object ( [oid] => 56d9d2687e34d70d3a304c46 ) [title] => abc123 )
{"_id":{},"title":"abc123"}
По крайней мере, в _id должен быть объект или номер. Мой вопрос заключается в том, что удаляет \ MongoDB \ BSON \ ObjectID и как я могу заставить его остаться?
Мой вопрос заключается в том, что убирает \ MongoDB \ BSON \ ObjectID
json_encode
будет кодировать только public
свойства встречаемых объектов.
как я могу заставить его остаться?
Вы можете преобразовать его в строку перед кодированием.
пример кода для ответа @ malarzm:
$output = [];
foreach( $data as $key => $val){
$val->_id = strval($val->_id);
$output[$key] = $val;
}
echo json_encode( $output );