[英]Doctrine mongo odm, annotate and query mongo ObjectId?
嘿,我正在尝试在mongodb中映射一些文档,并且一切都像这样完美
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\Field(type="string",name="text")
*/
protected $text;
但是,如果我有一个字段引用了另一个具有对象ID的文档,该怎么办:
...
other:ObjectId("823789473938ab"),
...
但是我必须设置什么类型呢?
/**
* @MongoDB\Field(type="?",name="other")
*/
protected $other;
当我使用@MongoDB\\Id
上方的注释时,它将失败
我也试着像
* @MongoDB\ReferenceOne(targetDocument="Bundle1:Other")
离开它无参数时,我在其他地方做某事时总是返回0
$others=$dm
->createQueryBuilder('Bundle1:Thing')
->field('other')
->equals('ObjectId("516c0061975a299edc44b419")')
->getQuery()
->execute()->count();
查询看起来像:
doctrine.INFO: MongoDB query: {"find":true,"query":{"other":"ObjectId(\"516c0061975a299edc44b419\")"},"fields":[],"db":"maself","collection":"thing"}
所以当然有一个零计数,所以问题的一部分还在于如何查询所有事物,其中其他是唯一的mongo id?
任何帮助,谢谢!
编辑:
@MongoDB\ReferenceOne(targetDocument="Bundle1:Other", simple=true)
选项“ simple”为true,应该适合您! Doctrine的默认引用格式是DBRef()
您可以通过以下方式查询它:
$qb->field('other')->references($OtherObject)
要么
$qb->field('other')->equals(new \MongoId('01243efe..'))
ObjectId()是PHP中mongo的本机字段类型,其\\ MongoId
如果要使用@MongoDB \\ Id,则必须导入:
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
编辑注释时请注意缓存!
提示:如果使用getId(),则此方法将返回字符串,而不是\\ MongoId
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.