我有一个在数据库中创建帖子的函数。帖子有自己唯一的 _id,但在创建时,还会获得一个“owner_id”,这是写帖子的用户的 id。
我有一个功能可以完美地显示所有公共帖子,它看起来像这样:
public function getPublicPosts()
{
try
{
return $this->getCollection("posts")->find(array("privacy"=>0));
}
catch(MongoCursorException $e)
{
echo "Posts retrieval failed: ".print_r($e);
}
}
所以,同样我编写了我的函数来检索用户的帖子,如下所示:
public function getUserPosts($user_id)
{
try
{
return $this->getCollection("posts")->find(array("owner_id"=>$user_id));
}
catch(MongoCursorException $e)
{
echo "Posts retrieval failed: ".print_r($e);
}
}
getPublicPosts 工作得很好。但是,getUserPosts 返回一个空的 Mongo 光标对象,即使用户的 _id 和帖子的 owner_id 字段完全匹配。在显示帖子的页面上,我已完成以下操作以确保:
<?php
foreach($public_posts as $post):
?>
<?php echo $post['owner_id']; ?><br/>
<?php echo $_SESSION['user_id']; ?>
这给出了 2 个帖子的以下结果:
4ffa66f7e3ed570f62000000 4ffa66f7e3ed570f62000000
所以我真的不确定这里发生了什么。我注意到在数据库中,当我插入用户的 id 时,它出现在字段值中
owner_id {"$oid": "4ffa66f7e3ed570f62000000"}
也许这就是问题所在?当我在显示公共帖子时访问 $posts['owner_id'] 时,这似乎不是问题。我不知道为什么会这样,因为我根本没有将 owner_id 设置为一个数组,只是一个值(用户自己的唯一 _id)
任何帮助将不胜感激!