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のような値があります。

たとえばユーザーID1などのユーザーIDに関連付けるにはどうすればよいですか?または、まったく新しいMongoIDビジネスを忘れて、ユーザーIDをドキュメントに保存する必要がありますか?

4

1 に答える 1

3

ドキュメントから:

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

$id: ID として使用する文字列。16 進数で 24 文字にする必要があります。このコンストラクターに無効な文字列が渡された場合、コンストラクターはそれを無視し、新しい ID 値を作成します。

そういうわけで、MongoId に id を与えても、16 進数24 文字に収まりません。そのため、MongoId はそれを無視して、新しいものを生成します。

UserId をそのまま定義するだけでよいと思います。

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