Findby参考学说mongodb



我有大量的用户和帖子。

用户看起来像

{ "_id" : ObjectId("5089cc4c7b03b9902b000000"), "facebook_id" : "522128874" }

帖子看起来像

{ "_id" : ObjectId("508aa21b7b03b9780800000f"), "facebook_id" : "10150709375878875", "user" : DBRef("User", ObjectId("5089cc4c7b03b9902b000000")), "message" : " Julia dream, dreamboat queen, queen of all my dreams", "updated_time" : 1333502938 }

我想找到特定用户的所有帖子。

$user = $userRepo->findOneByFacebookId('522128874');
$posts = $postRepo->findOneByUser($user)

它不起作用。我也尝试了

$posts = $postRepo->findOneBy(array('user' => $user))

$posts = $postRepo->findOneBy(array('user' => $user->getId()))

bam!

$posts = $postRepo->findOneBy(array('user.id' => $user->getId()))

尝试一下,为我工作。您似乎必须查询所有元素似乎有点愚蠢。

如果正确映射了文档关系,则需要做的只是

$user = $userRepo->findOneByFacebookId($fbid);
$posts = $user->getPosts();

您可能想查看双向参考学说文档

如果您想手动找到用户的帖子(更乏味的方式),则必须在帖子存储库中创建称为findOneByuser($ user)的方法。然后,您将必须将用户ID转换为牛角,然后使用QueryBuilder匹配用户。$ ID字段到Mongoid,该字段将返回光标。

请记住,当您创建一个具有引用另一个文档的文档(帖子)时,它会通过其mongoid存储该引用,因此,除非您自己创建此方法,否则您不能仅仅是findOneByuser($ user)。

您必须使用 references()查询构建器的方法,用于a @referferenceOne 欢https://doctrine-mongodb-odm.readthedocs.org/en/latest/reference/query-builder-api.html

$qb = $postRepo->createQueryBuilder('u')
               ->field('user')->references($user);


PS :使用 include referenceto() a @referencemany

相关内容

  • 没有找到相关文章

最新更新