Php Yii2:Gridview中筛选值的列总和

Php Yii2:Gridview中筛选值的列总和,php,mysql,yii2,Php,Mysql,Yii2,我可以使用以下代码对gridview中的列求和: <?php $command = Yii::$app->db->createCommand("SELECT sum(net_total) FROM estimate"); $sum = $command->queryScalar(); echo 'Total ='. $sum; ?> 现在我在线上得到了错误 $ids[]=$model->id;}as获取未知属性:yii\db\ActiveQuery::id是否尝试

我可以使用以下代码对gridview中的列求和:

<?php
$command = Yii::$app->db->createCommand("SELECT sum(net_total) FROM estimate");
$sum = $command->queryScalar();
echo 'Total ='. $sum;
?>
现在我在线上得到了错误
$ids[]=$model->id;}
as
获取未知属性:yii\db\ActiveQuery::id

是否尝试将此查询直接添加到ActiveDataprovider?如前所述,可以指定其他查询部分,这应该是一个可能的解决方案。或者,您可以尝试从ActiveDataprovider中提取结果的ID,并使用它们修改辅助查询

第二种方法的示例:

// You should make sure that the same parameters are passed to
// the GridView's ActiveDataProvider and the Model's find() function
$idQuery = Estimate::find()->all();

$ids = [];
foreach ($idQuery as $i => $model) {
    $ids[] = $model['id'];
}

$command = Yii::$app->db->createCommand('SELECT sum(net_total) FROM estimate WHERE `id` IN ('.implode(',',$ids).')'); // please use a prepared statement instead, just a proof of concept
$sum = $command->queryScalar();

你好,Nikolas我应该用什么来代替它。谢谢。您创建的原始ActiveDataProvider用于获取(过滤的)数据。嗨,Nicholas-我已经按照您的建议更新了问题,但是我得到了问题中提到的错误。嗯,是的,因为它可能是
foreach($copyOfADP->getModels()$I=>$model)
或类似的。另请参见和。谢谢-该错误已消失,但我在
$命令
行-
yii\base\ErrorException-数组到字符串转换中遇到另一个错误
// You should make sure that the same parameters are passed to
// the GridView's ActiveDataProvider and the Model's find() function
$idQuery = Estimate::find()->all();

$ids = [];
foreach ($idQuery as $i => $model) {
    $ids[] = $model['id'];
}

$command = Yii::$app->db->createCommand('SELECT sum(net_total) FROM estimate WHERE `id` IN ('.implode(',',$ids).')'); // please use a prepared statement instead, just a proof of concept
$sum = $command->queryScalar();