[英]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.