Doctrine ODM:无法实现双向关系

Doctrine ODM:无法实现双向关系,doctrine,doctrine-orm,doctrine-odm,Doctrine,Doctrine Orm,Doctrine Odm,我有两份文件。我试图找到所有与某个特定的人相关的文件。文档保存在它们的集合中,并且正在创建从个人到纸张的引用,但不是相反 /**@ODM\Document*/ 课堂论文 { /** *@ODM\Id */ 受保护的$id; /**@ODM\ReferenceOne(targetDocument=“Person”,cascade={“all”},mappedBy=“papers”)*/ 受保护的人; 公共函数获取($property){ 返回$this->$属性; } 公共函数集($propert

我有两份文件。我试图找到所有与某个特定的人相关的文件。文档保存在它们的集合中,并且正在创建从
个人
纸张
的引用,但不是相反

/**@ODM\Document*/
课堂论文
{
/**
*@ODM\Id
*/
受保护的$id;
/**@ODM\ReferenceOne(targetDocument=“Person”,cascade={“all”},mappedBy=“papers”)*/
受保护的人;
公共函数获取($property){
返回$this->$属性;
}
公共函数集($property,$value){
$this->$property=$value;
}
公共职能toArray(){
返回get\u object\u vars($this);
}
}
/**@ODM\Document*/
班主任
{
/**
*@ODM\Id
*/
受保护的$id;
/**@ODM\ReferenceMany(targetDocument=“Paper”,cascade={“all”},inversedBy=“person”)*/
受保护的文件;
公共函数获取($property){
返回$this->$属性;
}
公共函数集($property,$value){
$this->$property=$value;
}
公共职能toArray(){
返回get\u object\u vars($this);
}
}
创建新的双向参考

$person=$dm->getRespository('person')->find($person\u id);
$paper=新纸张();
$person->papers->add($papers);
$dm->persist($person);
$dm->flush();
在代码后面,此查询返回0个结果;它不应该退回指定人员写的文件吗

$papers=$dm->createQueryBuilder(“纸张”)
->字段('person.$id')->equals(new\MongoId($person\u id\u as\u string))
->getQuery()->execute();

如果Paper::person带有“mappedBy”注释,则意味着Paper不是“拥有方”,并且条令不会保留对Paper::person的任何更改

要使查询正常工作,请将纸张设为拥有方,以便纸张存储对Person的引用

/** @ODM\Document */
class Person
{
    /** @ODM\ReferenceMany(targetDocument="Paper", mappedBy="person") */
    protected $papers;
}

/** @ODM\Document */
class Paper
{    
    /** @ODM\ReferenceOne(targetDocument="Person", inversedBy="papers") */
    protected $person;
}
创建一篇论文并保留对人的引用:

$person = $dm->getRespository('Person')->find($person_id);

$paper = new Paper();
$paper->person = $person;

$dm->persist($paper);
$dm->flush();
按$person查询论文:

$papers = $dm->createQueryBuilder('Paper')
    ->field('person')->references($person)
    ->getQuery()->execute();

如果我想查询原始代码示例中的“纸”面,我是否有权访问对Person的引用?您能重新表述一下吗?我不知道你的意思。