如何解决Yii2:如何在sum中使用sum函数?
我在GridView小部件中使用的CarsSearch模型中有一个find函数:
$query = Cars::find();
现在,我需要向该查找功能添加一个SQL SUM函数,但是它不起作用。所以我试图显示SQL查询,但出现此错误:
$query = Cars::find()->sum('price');
echo $query->createCommand()->sql; // Call to a member function createCommand() on integer
解决方法
方法ActiveQuery::sum()
执行SQL查询,并已返回结果。
您无需对其进行任何其他操作。
echo Cars::find()->sum('price');
这将输出表中所有行的列价格总和。
如果您想添加一些条件或其他事情,则需要在调用sum()
方法之前进行此操作。
echo Cars::find()->where(['category' => 'SUV'])->sum('price')
这将输出所有以“ SUV”为类别的汽车的价格总和。
如果在查询中需要为一列使用sql SUM()
函数来选择更多列,则不能使用ActiveQuery::sum()
方法。相反,您可以使用select()
或addSelect()
方法告诉查询要选择哪些列。
$query = Cars::find()
->select([
'sumPrices' => 'SUM(price)','countCars' => 'COUNT(*)'
]);
有关更多信息,请参见documentation。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。