如何在 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')
];
})
//...
另见
我有这个简单的代码,我想知道如何使用 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')
];
})
//...
另见