ドキュメントが埋め込まれているドキュメントがありますが、データが永続化されているにもかかわらず、「非配列に $push/$pushAll 修飾子を適用できません」というエラーが表示されます。
ここに私の文書があります:
/**
* @MongoDB\EmbeddedDocument
*/
class Author
{
/**
* @MongoDB\Int
*/
protected $id;
/**
* @MongoDB\String
*/
protected $name;
}
Author ドキュメントを埋め込んだコメント ドキュメントは次のとおりです。
/**
*@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);」という行にあります。外すと消えるから。
私は何を間違っていますか?