Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 条令QueryBuilder-多个选择字段_Php_Doctrine Orm_Symfony_Query Builder - Fatal编程技术网

Php 条令QueryBuilder-多个选择字段

Php 条令QueryBuilder-多个选择字段,php,doctrine-orm,symfony,query-builder,Php,Doctrine Orm,Symfony,Query Builder,我对多个选择字段有一个奇怪的问题。 这是我的疑问: $query = $queryBuilder ->select( [ 'SUM(t1.quantity) AS quantity_t1', 't2.currency AS currency_t2', 'SUM(t1.amount - t1.promotionDisc

我对多个选择字段有一个奇怪的问题。 这是我的疑问:

$query = $queryBuilder
            ->select(
                [
                    'SUM(t1.quantity) AS quantity_t1',
                    't2.currency AS currency_t2',
                    'SUM(t1.amount - t1.promotionDiscount) AS amount_t1',
                    'SUM(ROUND((t1.amount - t1.promotionDiscount) / ((100 + t2.tax) / 100), 2)) AS amount_net',
                    'SUM(ROUND((t1.amount - t1.promotionDiscount) / '.EXCHANGE_RATE_GBP.', 2)) AS amount_gbp',
                    'SUM(ROUND(ROUND((t1.amount - t1.promotionDiscount) / '.EXCHANGE_RATE_GBP.', 2) / ((100 + t2.tax) / 100), 2)) AS amount_gbp_net'
                ]
            )
            ->from(Sale::class, 't2')
            ->join(
                SaleRow::class,
                't1',
                Join::WITH,
                $queryBuilder->expr()->andX(
                    $queryBuilder->expr()->eq('t1.saleId', 't2.id')
                )
            )
            ->where(
                $queryBuilder->expr()->between('t2.purchaseTime', ':start', ':end')
            )
            ->andWhere(
                $queryBuilder->expr()->in('t2.orderStatus', ':status')
            )
            ->setParameters(
                [
                    ':start' => $startDate->format('Y-m-d H:i:s'),
                    ':end' => $endDate->format('Y-m-d H:i:s'),
                    ':status' => ['pending', 'shipped']
                ]
            )
            ->getQuery();

        $results = $query->getArrayResult();
查询有效,但仅当我更改选择数组时:

例如:

->select(
    [
       't1.id',
       't2.id'
    ]
 )
而且很奇怪。。。 这项工作:

->select(
    [
        'SUM(t1.quantity) AS quantity_t1',
        'SUM(t1.amount - t1.promotionDiscount) AS amount_t1'
    ]
)
这也是:

->select(
    [
        't2.currency AS currency_t2',
    ]
)
但是。。这不起作用:

->select(
    [
        'SUM(t1.quantity) AS quantity_t1',
        't2.currency AS currency_t2',
    ]
)

为什么?

在SQL查询中不能混合使用聚合和非聚合

因为聚合将返回一个值。 非聚合将返回每个值

如何在响应中混合这些结果

另一个问题是,在DQL中使用
ROUND()
函数。但是这个函数不存在,你必须


请参阅。

好的,谢谢。。但是,当我删除非合计选择行(t2.currency as currency_t2)时,它也不起作用…我从条令中得到了一个例外。。。“预期已知函数已被绕过”原则中没有圆函数。。。您必须创建它,请参见此处: