我有用户和帖子的集合。
用户看起来像
{ "_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()))发布于 2012-10-29 20:09:26
如果您正确地映射了文档关系,那么您需要做的只是
$user = $userRepo->findOneByFacebookId($fbid);
$posts = $user->getPosts();您可能想看看Bidirectional References Doctrine Documentation
如果希望手动查找用户的帖子(更繁琐的方式),则必须在帖子存储库中创建名为findOneByUser($user)的方法。然后,您必须将用户ID转换为MongoId,然后使用querybuilder将user.$id字段与将返回MongoId的querybuilder相匹配。
请记住,当您创建一个引用另一个文档的文档(在本例中为post)时,它通过其MongoId存储引用,因此您不能简单地执行findOneByUser($user),除非您自己创建了此方法。
发布于 2013-05-08 13:18:52
Bam!
$posts = $postRepo->findOneBy(array('user.id' => $user->getId()))试试看,对我很有效。你必须查询所有的元素,这看起来有点愚蠢。
发布于 2015-10-09 21:05:20
对于@ReferenceOne这样的https://doctrine-mongodb-odm.readthedocs.org/en/latest/reference/query-builder-api.html,必须使用查询构建器的references()方法
$qb = $postRepo->createQueryBuilder('u')
->field('user')->references($user);引用PS:使用includesReferenceTo() a@
https://stackoverflow.com/questions/13090612
复制相似问题