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的引用?您能重新表述一下吗?我不知道你的意思。