Получение родительского объекта с идентификатором ссылочных документов
Я новичок в документально-ориентированных базах данных. Я застрял с простой проблемой:
У меня есть разные объекты: пост и тег.
{
"_id": "ObjectId("50dad56881000001")",
"author":"Chuck Norris",
"title":"Blah....",
"tags": [
DBRef("Tag", ObjectId("50dad564871000001")),
DBRef("Tag", ObjectId("50dad564871000002")),
DBRef("Tag", ObjectId("50dad564871000003"))
}
Мне нужно найти сообщения по тегам. Я не могу понять, как это сделать с массивом ссылочных объектов...
Вот мои сопоставленные объекты:
class Tag
{
/** @MongoDB\Id */
protected $id;
/** @MongoDB\Field(type="string") */
protected $name;
/** @MongoDB\Field(type="date") */
protected $createdAt;
}
class Article
{
/** @MongoDB\Id */
protected $id;
/** @MongoDB\Field(type="date") */
protected $date;
/** @MongoDB\Field(type="string") */
protected $title;
/** @MongoDB\Field(type="string") */
protected $author;
/** @MongoDB\Field(type="string") */
protected $content;
/** @MongoDB\ReferenceMany(targetDocument="Tag", cascade="all") */
protected $tags
}
1 ответ
Решение
Я думаю, что нашел что-то подходящее, чтобы ответить на мою проблему. Но я не уверен, что это лучший способ сделать это...
public function getPostsWithTag($tagId)
{
$query = $this->createQueryBuilder()
->field('tags.id')
->in(array($tagId)
->getQuery()
return $query->execute();
}