2016-03-04 29 views
2

我在從MongoDB數據庫中檢索ObjectID時出現問題,但'_id'值在通過json_encode運行時總是消失。我陣列中的所有其他數據都存在。我的代碼是這樣:MongoDB BSON ObjectID從MongoDB中丟失了JSON編碼

$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,我怎樣才能讓它留下來?

+0

請發佈您所獲得的輸出以及您所期望的輸出。 – Sammitch

+0

好的,發佈了輸出 –

回答

3

我的問題是什麼是剝出\ MongoDB的\ BSON \ OBJECTID

json_encode將編碼只public遇到的對象的屬性。

我怎樣才能讓它留下來?

您可以在編碼之前將其轉換爲字符串。

+0

是的,將它轉換爲字符串確實有效,但是與創建它的開發人員感覺就像是設計缺陷。 –

+0

@DevinDixon如果有什麼與JSON編碼器的工作方式有關,並且按預期工作。 malarzm是正確的。 – Sammitch

+2

@Sammitch是的malarzm答案是正確的,我寫了一個遞歸json函數,將所有項目轉換爲字符串。我所指的設計缺陷是MongoDB PHP最新更新中發佈的很多功能。只是個人的觀點,我喜歡根據需要編寫抽象層的最小化發展方法。很多PHP Mongo功能都具有抽象層,這會增加更多時間來學習其實現並重寫代碼。 –