symfony4 с агрегацией доктрина-одм не работает - PullRequest
0 голосов
/ 22 января 2019

Я преобразовал запрос оболочки mongo в запросы к доктрине symfony4. Для этого я использую createAggregationBuilder . Он ничего не вернет и выбрасывает из памяти исключение.

Примечание: Даже если у меня тоже увеличен лимит php, я столкнулся с той же проблемой.

Пожалуйста, найдите следующие коды:

Запросы Shell Mongo:

db.Article.aggregate([
    {
        $group: {
            _id: { department: "$department" },
            count: { $sum: 1 }
        }
    },
    { 
        $sort: { 
            salary: -1 
        } 
    }
]);

Выход Shell Mongo:

{ "_id" : { "department" : "IAS" }, "count" : 1 }
{ "_id" : { "department" : "DOCTOR" }, "count" : 1 }
{ "_id" : { "department" : "IT" }, "count" : 1 }
{ "_id" : { "department" : "sales" }, "count" : 4 }

Так же, как создали в symfony4. но я столкнулся с проблемой.

$builder = $this->createAggregationBuilder(Article::class);
$builder
    ->group()
        ->field('id')            
        ->expression('$department')
        ->field('department')
        ->sum('$department')
    ->sort(['salary' => -1])
    ->limit(1);

1 Ответ

0 голосов
/ 26 января 2019
    $qb->group()
        ->field('id')->expression(
            $qb->expr()->field('department')->expression('$department')
        )
        ->sum('$department');

В следующий раз используйте $ qb-> getPipeline () для отладки вашего запроса, это сэкономит вам много времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...