2014-01-08 80 views
2

嘿林試圖映射在MongoDB的一些文件和一切都運行完美這樣學說mongo odm,註釋和查詢mongo ObjectId?

/** 
* @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 註解失敗

我也tryed使用refferencene像

* @MongoDB\ReferenceOne(targetDocument="Bundle1:Other") 

離開它argumentless總是返回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"} 

所以ofcourse那裏有一個零計數,所以這個問題的部分也就是如何查詢所有的東西,而其他是一個獨特的蒙戈ID?

任何幫助在此先感謝!

回答

1

編輯:

@MongoDB\ReferenceOne(targetDocument="Bundle1:Other", simple=true) 

選項 「簡單的」 真,應該爲你工作!教義默認的參考格式是DBREF()

您可以通過查詢它:

$qb->field('other')->references($OtherObject) 

$qb->field('other')->equals(new \MongoId('01243efe..')) 

的ObjectId()是在PHP蒙戈本地字段類型它的\ MongoId

如果你想使用@MongoDB \ Id你必須導入:

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

編輯註釋時請注意緩存!提示:如果您使getId(),此方法將返回一個字符串,而不是\ MongoId

+0

嘿,謝謝! @MongoDB \ id工作正常,正如我所說的。 getId()的註釋看起來如何?我想我沒有得到它的工作 –

+0

我也更新了我的答案 –

+0

我也更新了我的答案:) –