2012-10-20 46 views
1

我有一個用戶表AA關係數據庫和具有用戶ID等。然而該評論系統被存儲在蒙戈和爲什麼MongoID會生成不同的值?

$author = new Author(); 
$userID = 1; 
$author->setId(new \MongoId($userID)); <--- different ID generated everytime 

$discussion = new Discussion(); 
      $discussion->setCreatedAt(new \DateTime()); 
      $discussion->setAuthor($author); 

所生成的ID不同,每次所以我喜歡5082a694253b4a1201000000值,5082a55e253b4a1f05000000 。

我如何將用戶標識關聯回例如用戶標識1?或者應該忘記全新的MongoID業務,並將用戶ID存儲在文檔中?

+2

這是因爲'MongoId'旨在產生這些字符串,如果你不把在'ObjectId'它會嘗試並創建一個新的。而不是'datetime'使用'MongoDate',它將正確地轉換爲mongodb標準。 – Sammaye

+0

我遵循http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/introduction.html上的文檔。思考? – milof

+0

迷人不知道他們的'datetime'確實鏈接到'mongodate'上,但是如果他們說這是必須的,我已經環顧四周,它似乎工作 – Sammaye

回答

3

documentation

公共MongoId :: __構建體([字符串$ ID = NULL])

$ ID: 一個字符串,作爲id使用。必須是24個十六進制字符。如果將無效字符串傳遞給此構造函數,構造函數將忽略它並創建一個新的id值。

所以這就是爲什麼,即使你給一個ID,MongoId,它不適合爲24十六進制字符。所以MongoId忽略它並生成一個新的。

我想你只需要定義的用戶標識,因爲它是:

$author = new Author(); 
$author->setUserId($userID); 
相關問題