在 yii2 中使用 sum() 以及按相关字段分组

Ali*_*ias 3 yii2

我有一张账单,其中有 3 列 - 派对名称、账单日期、账单金额。还有另一个表party,其中包含partyname 和region 列。两者都与partyname有关。我可以加入它们并在 gridview 中显示数据。我想要的是显示如下数据

District    Billdate    Billamount
Kolkata 2016-03-02  20000
Malda   2016-03-02  30000
Jalpaiguri  2016-03-02  30000
Run Code Online (Sandbox Code Playgroud)

Billamount 列是属于特定地区的所有各方的总和(金额)。我读过Yii2 -让一列的总和Yii的2 ActiveDataProvider与查询- >所有()给出了“呼叫到阵列中的成员函数andFilterWhere()”的错误Yii2查询不返回列总和Yii2 -得到的总和一栏。却说不出来。请帮忙。我的搜索是

public function search($params)
    {
        $query = Bills::find();
        $query->joinWith(['parties']);

        //$command = Yii::$app->db->createCommand("SELECT sum(billamount) FROM bills");
        //$sum = $command->queryScalar();
        //echo $sum;
        //$sum = $query->sum('billamount');
        //echo $sum;
        // $sum = (new \yii\db\Query())->from('bills');
        // $sum = $sum->sum('billamount');
        // echo $sum;

        //$sum = $query->sum('billamount');
        //echo $sum;

        // add conditions that should always apply here

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);
Run Code Online (Sandbox Code Playgroud)

sca*_*dge 5

使用 var 为 sum 别名扩展您的模型

class YourModel extends \yii\db\ActiveRecord
{

   public $my_sum;
   .....
Run Code Online (Sandbox Code Playgroud)

然后

 $query = Bills::find()->select('partyname, billdate, sum(billamount) as my_sum)';
 $query->joinWith(['parties']);
Run Code Online (Sandbox Code Playgroud)

在您的 dataProvider 中,您可以参考总和 my_sum