2016-08-14 52 views
1

以文檔例如:學說ODM查詢參考許多領域

/** @Document */ 
class BlogPost 
{ 
    // ... 

    /** @ReferenceOne(targetDocument="User", inversedBy="posts") */ 
    private $user; 
} 

/** @Document */ 
class User 
{ 
    // ... 

    /** @ReferenceMany(targetDocument="BlogPost", mappedBy="user") */ 
    private $posts; 
} 

有,我可以查詢用戶實體和檢索的一切職務什麼辦法?

我的意思是,我可以使用例如查詢:

db.BlogPost.find({ 'user.$id' : user.id }) 

但如果我想做的事:

db.User.find({ 'id' : id }) 

,並獲得用戶的帖子通過用戶屬性$帖子

可以這樣被存檔?

編輯

當我執行,我們可以發現,日誌查詢:

[2016-08-15 17:13:45] doctrine.DEBUG: MongoDB query: {"find":true,"query":{"_id":{}},"fields":[],"db":"base","collection":"User"} [] [] 
[2016-08-15 17:13:45] doctrine.DEBUG: MongoDB query: {"limit":true,"limitNum":1,"query":{"_id":{}},"fields":[]} [] [] 
[2016-08-15 17:13:45] doctrine.DEBUG: MongoDB query: {"limit":true,"limitNum":null,"query":{"_id":{}},"fields":[]} [] [] 

回答

0

教義ODM:

$dm = $this->get('doctrine_mongodb')->getManager(); 

$user = $dm->getRepository('AppBundle:User')->findOneById($id); 
$posts = $user->getPosts(); 
+0

我已經嘗試和getPosts返回一個空集,別的我需要檢查或檢查可能導致這種情況發生? – bitgandtter

+0

你用教條填充你的數據庫嗎? – Alsatian

+0

閱讀此:http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/reference-mapping.html#storing-references – Alsatian