我有一个包含嵌入文档的文档,但我收到“无法将 $push/$pushAll 修饰符应用于非数组”错误,即使数据被保留。
这是我的文件:
/**
* @MongoDB\EmbeddedDocument
*/
class Author
{
/**
* @MongoDB\Int
*/
protected $id;
/**
* @MongoDB\String
*/
protected $name;
}
这是嵌入作者文档的我的评论文档:
/**
*@MongoDB\Document(collection="discussions")
*/
class Discussion
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\ObjectId
*/
protected $discussion_id;
/**
* @MongoDB\String
*/
protected $slug;
/** @MongoDB\EmbedOne(targetDocument="Author") */
protected $author;
/**
* @MongoDB\String
*/
protected $text;
/**
* @MongoDB\Date
*/
protected $createdAt;
}
最后,这是我嵌入讨论文件的上市文件
class Listing
{
/**
* @MongoDB\Id
*/
protected $id;
/** @MongoDB\ReferenceMany(targetDocument="Discussion") */
protected $discussions;
public function __construct()
{
$this->discussions = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add discussions
*
* @param Main\SomeBundle\Document\Discussion $discussions
*/
public function addDiscussions(\Main\SomeBundle\Document\Discussion $discussions)
{
$this->discussions[] = $discussions;
}
/**
* Get discussions
*
* @return Doctrine\Common\Collections\Collection $discussions
*/
public function getDiscussions()
{
return $this->discussions;
}
}
因此,在我的代码中,我正在执行以下操作以将数据放入:
$author = new Author();
$author->setId( 1 );
$author->setName("blahblah"); //for now the user name is the author name
$discussion = new Discussion();
$discussion->setAuthor($author);
$dm->persist($discussion);
$listing->addDiscussions($discussion); <---- I GET THIS HERE!!!!
$dm->persist($listing);
$dm->flush();
我得到的错误是在“$listing->addDiscussions($discussion);”这一行。因为当我删除它时,它就会消失。
我究竟做错了什么?