Doctrine MongoDB - гидратируйте результаты внутри фасета с помощью Doctrine MongoDB Aggregation Builder - PullRequest
0 голосов
/ 28 ноября 2018

У меня следующий запрос, и я хочу, чтобы первый результат был увлажнен.Вот что я попробовал:

$builder = $dm->createAggregationBuilder(\Documents\Jobs::class);
$builder
    ->facet()
        ->field('carpenterJobs')
        ->pipeline(
            $dm->createAggregationBuilder(\Documents\Jobs::class)
                ->hydrate($this->getEntityName(\Documents\Jobs::class))
                ->match()
                ->field('name')
                ->equals('carpenter');
        )
        ->field('cleanerJobs')
        ->pipeline(
            $dm->createAggregationBuilder(\Documents\Jobs::class)
                ->match()
                ->field('name')
                ->equals('cleaner');
        )
;

Но когда я выполняю это, результаты не увлажняются.Ниже приведена сущность Джобса:

/**
 * @QueryResultDocument
 * @Document(repositoryClass="...")
 */
class Jobs
{
    /**
     * @Id
     */
    private $id;

    /**
     * @Field(type="string")
     * @Index(unique=true, order="asc")
     */
    private $name;

    ...
}

Я также попытался гидратировать $builder, но он возвращает ошибку, говорящую Undefined index: _id.Выполнив запрос 'carpenterJobs' сам, не находясь внутри крана, я могу вернуть гидратированные результаты.

...