Сущность: KeyWord
/**
* @MongoDB\Document(repositoryClass=KeyWordRepository::class)
*/
class KeyWord
{
/**
* @MongoDB\Id()
*/
private $id;
/**
* @MongoDB\Field(type="string")
* @Assert\NotBlank()
*/
private $search;
/**
* @MongoDB\ReferenceMany(targetDocument="KeywordGroup::class", mappedBy="keyword")
* @var Collection
*/
private $keywordGroups;
}
Сущность: KeyWordGroup
/**
* @MongoDB\Document(repositoryClass=KeywordGroupRepository::class)
*/
class KeywordGroup
{
/**
* @MongoDB\Id()
*/
private $id;
/**
* @MongoDB\ReferenceMany(targetDocument="Keyword::class", inversedBy="keywordGroups")
* @var Collection
*/
private $keyword;
}
Функция репозитория для получения результата из группы ключевых слов
public function getKeyWordGroup()
{
$builder = $this->dm->createAggregationBuilder(KeywordGroup::class);
$builder
->hydrate(Keyword::class)
->match()
->field('keywordResult.search')->equals('Hotel')
->lookup('Keyword')
->localField('keyword.id')
->foreignField('id')
->alias('keywordResult')
;
return $builder->execute();
}
С контроллера, который я вызываюфункция репозитория, такая как:
$results = $this->dm->getRepository(KeywordGroup::class)->getKeyWordGroup();
foreach ($results as $result)
{
dump($result);
}
Мне нужны все записи из группы ключевых слов, которые имеют ключевое слово "Hotel"Этот запрос дает мне 0 записей, даже если у меня есть ключевое слово "Hotel".