1

我有一个带有用户表的关系数据库,并且有用户 ID 等。但是评论系统存储在 Mongo 和

$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 之类的值。

如何关联回用户 ID,例如用户 ID 1?还是应该忘记整个新的 MongoID 业务,只将用户 ID 存储在文档中?

4

1 回答 1

3

文档中:

公共 MongoId::__construct ([ string $id = NULL ] )

$id:用作 id 的字符串。必须是 24 个十六进制字符。如果将无效字符串传递给此构造函数,构造函数将忽略它并创建一个新的 id 值。

所以这就是为什么,即使你给 MongoId 一个 id,它也不适合24 个十六进制字符。所以 MongoId 忽略它并生成一个新的。

我认为您只需要按原样定义 UserId :

$author = new Author();
$author->setUserId($userID);
于 2012-10-20T14:28:15.020 回答