我想要一个嵌入文档的集合。我将数据放入数据库,如下所示:
$dm->getRepository('BundleUserBundle:User')->addRatedPostById($user->getId(), new RatedPost($id, $type));
这很好用。现在我在mongo控制台中看到了新数据,但当我试图通过getRatedPosts()
方法获取这些数据时,它会返回null,而不是ArrayCollection。怎么了?
上下文如下:
class User extends BaseUser {
/**
* @MongoDBEmbedMany(targetDocument="RatedPost")
*/
protected $ratedPosts;
/**
* Add ratedPosts
*
* @param BundleUserBundleDocumentRatedPost $ratedPosts
*/
public function addRatedPost(BundleUserBundleDocumentRatedPost $ratedPosts)
{
$this->ratedPosts[] = $ratedPosts;
}
/**
* Remove ratedPosts
*
* @param BundleUserBundleDocumentRatedPost $ratedPosts
*/
public function removeRatedPost(BundleUserBundleDocumentRatedPost $ratedPosts)
{
$this->ratedPosts->removeElement($ratedPosts);
}
/**
* Get ratedPosts
*
* @return DoctrineCommonCollectionsCollection $ratedPosts
*/
public function getRatedPosts()
{
return $this->ratedPosts;
}
/**
* @MongoDBEmbeddedDocument
*/
class RatedPost
{
/**
* @MongoDBInt
*/
public $post;
/**
* @MongoDBString
*/
public $rate;
...
}
我遇到了完全相同的问题:保存没有问题,但获取嵌入文档有问题。结果发现这是一个"Symfony"缓存问题(也在app_dev.php上)。你试过删除你的缓存吗,这对我很有效!