Возьмите пример документации:
/** @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 })
И доступ к сообщениям пользователя через свойство пользователя $ posts
Можно ли это заархивировать?
Когда я выполняю запрос, мы можем найти журналы:
[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":[]} [] []
С доктриной ODM:
$dm = $this->get('doctrine_mongodb')->getManager();
$user = $dm->getRepository('AppBundle:User')->findOneById($id);
$posts = $user->getPosts();
Других решений пока нет …