【问题标题】:Get empty collection of embedded documents获取嵌入文档的空集合
【发布时间】:2013-07-13 10:10:17
【问题描述】:

我想获取嵌入文档的集合。我像这样将数据放入数据库:

$dm->getRepository('BundleUserBundle:User')->addRatedPostById($user->getId(), new RatedPost($id, $type));

...效果很好。现在我在 mongo 控制台中看到了新数据,但是当我尝试通过 getRatedPosts() 方法获取这些数据时,它返回 null 而不是 ArrayCollection。怎么了?

上下文如下所示:

class User extends BaseUser {
    /**
     * @MongoDB\EmbedMany(targetDocument="RatedPost")
     */
    protected $ratedPosts;

   /**
    * Add ratedPosts
    *
    * @param Bundle\UserBundle\Document\RatedPost $ratedPosts
    */
    public function addRatedPost(\Bundle\UserBundle\Document\RatedPost $ratedPosts)
    {
        $this->ratedPosts[] = $ratedPosts;
    }

   /**
    * Remove ratedPosts
    *
    * @param Bundle\UserBundle\Document\RatedPost $ratedPosts
    */
    public function removeRatedPost(\Bundle\UserBundle\Document\RatedPost $ratedPosts)
    {
        $this->ratedPosts->removeElement($ratedPosts);
    }

   /**
   * Get ratedPosts
   *
   * @return Doctrine\Common\Collections\Collection $ratedPosts
   */
   public function getRatedPosts()
   {
       return $this->ratedPosts;
   }

/**
 * @MongoDB\EmbeddedDocument
 */
class RatedPost
{
    /**
     * @MongoDB\Int
     */
    public $post;

   /**
    * @MongoDB\String
    */
    public $rate;
   ...
}

【问题讨论】:

    标签: mongodb symfony doctrine odm


    【解决方案1】:

    我遇到了完全相同的问题:保存没有问题,但获取嵌入的文档却是。原来这是一个“Symfony”缓存问题(也在 app_dev.php 上)。您是否尝试过删除缓存,这对我有用!

    【讨论】:

    • 这对我也有用,如果我早点看到它,本可以节省数小时的反复试验。
    • 谢谢!谢谢!谢谢!这个答案拯救了我的一天。我花了一个多小时才明白为什么这个 f**king 数组一直是空的 ^^ 再次感谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 2012-04-20
    • 1970-01-01
    • 2019-11-13
    相关资源
    最近更新 更多