gpt4 book ai didi

php - 类 XXX 不是有效文档或映射父类(super class)

转载 作者:行者123 更新时间:2023-12-05 05:24:17 31 4
gpt4 key购买 nike

我正在使用 Doctrine Doctrine MongoDB ODM 1.0.3。尝试使用 Doctrine 更新文档时出现以下错误:

Class XXX is not a valid document or mapped super class.

我有以下文档类:

<?php
namespace Documents;

use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;

/**
* @ODM\Document(collection="posts")
*/
class Posts
{
/** @ODM\Id */
private $id;

/** @ODM\Field(type="string") */
private $title;

/** @ODM\EmbedMany(targetDocument="Comment") */
private $comments = array();

public function setTitle($title)
{
$this->title = $title;
}

public function getTitle()
{
return $this->title;
}

public function addComment($comment)
{
$this->comments[] = $comment;
}

public function getComments()
{
return $this->comments;
}
}

以下代码用于添加新文档:

$post = new \Documents\Posts();
$post->setTitle( $_POST['title'] );
$dm->persist($post);
$dm->flush();

稍后我想更新添加的文档,例如添加新评论。我使用以下代码:

$comment = new \Documents\Comment($_POST['comment_text']);
$dm->createQueryBuilder('Posts')
->update()
->field('comments')->push($comment)
->field('_id')->equals(new \MongoId($_POST['id']))
->getQuery()
->execute();

但出现上述错误。

最佳答案

正如您在自己的回答中所述,您需要提供完全限定的类名。只是想添加比传递字符串更好的方法,而是使用这样的静态类属性:createQueryBuilder(\Documents\Posts::class); 它与 IDE(自动完成、重构等等...)

关于php - 类 XXX 不是有效文档或映射父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35187865/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com