如何在 cakephp 3.8 querybuilder 中使用 Sum?

How to use Sum in cakephp 3.8 querybuilder?

我有这个简单的代码,我想知道如何使用 cakephp 3.8 querybuilder 进行查询,然后如何获取它..

SELECT sum(quantity) as quant from carts WHERE user_id = 7;

我正在使用这个查询:

$quantity = $this->Carts
    ->find()
    ->select([
        'quant' => $quantity->func()->sum('quantity')
    ])
    ->where([
        'user_id' => $this->Auth->user('id')
    ])
    ->toArray();

这样对吗?

我收到这个错误- 在 null

上调用成员函数 func()

$quantity 变量在 toArray() 调用的查询生成器 return 之后才存在,因此您不能在 [=14= 之前使用它] 调用,甚至在之后 return 值不再是查询构建器实例,而是结果数组,因为这就是 toArray() 将 return.

在调用 select() 之前存储对查询构建器的引用,例如:

$quantityQuery = $this->Carts->find();
$quantity = $quantityQuery 
    ->select([
        'quant' => $quantityQuery->func()->sum('quantity')
    ])
    //...

或将可调用对象传递给 select(),它将检索查询实例作为参数:

$quantity = $this->Carts
    ->find()
    ->select(function (\Cake\ORM\Query $query) {
        return [
            'quant' => $query->func()->sum('quantity')
        ];
    })
    //...

另见