2017-08-10 98 views
0

我需要为每个用户在同一个gridview和每个月的过滤器上计算所有费用和收入。我有两个SQL查询并且每个都工作。但我需要协助将yii2转换为activedataprovider。如果一个确实加入了结果这是错误的。如何在yii2上按月查看spences

这是我的代码:

public function actionEstadistics() 
{ 
    $request = Yii::$app->request; 
    $user_id = Yii::$app->user->id; 


    $sql = "SELECT date_format(created_at,'%Y-%m') AS periodo, 
    SUM(efectivo+valesotros) AS ingresos 
    FROM pagosing 
    WHERE user_id= $user_id  
    GROUP BY date_format(created_at,'%Y-%m') 
    "; 


    $sql2 = "SELECT date_format(created_at,'%Y-%m') AS periodo, 
    SUM(costototal) AS gastos 
    FROM garageservices 
    WHERE user_id= $user_id  
    GROUP BY date_format(created_at,'%Y-%m') 
    "; 


$dataProvider = new SqlDataProvider([ 
    'sql' => $sql, 
    'pagination' => false 
]); 
+0

为什么不做循环和总和所有费用? – madalinivascu

+0

或者在pagsing和garageservices上加入?然后做总和? – madalinivascu

+0

让我发布mi db schema –

回答

0

我假设你有两种模式一种是“用户”和第二个是“UserExpenses”。现在,你需要遵循以下步骤:用户详细信息模型的

  1. 显示网格,并采取了动作按钮操作列内

  2. 链接动作按钮到另一个UserExpenses细节模型网格会有所有费用的细节,收入

  3. 您可以使用KartikGridView显示费用和收入列的总和。它也将应用于过滤数据。

  4. 在UserExpense模型网格细节上应用逐月过滤器。

如需更多帮助,请发布您的数据库结构。所以我可以为你发布代码。我希望给出的情景会为你工作。

+0

table user-id,table pagosing,sum efectivo + vales,user_id(income)table garageservices sum costototal,user_id,order for (例如谷歌图表我试图加入与像$查询= Pagosing :: find() - >选择(“date_format(created_at,'%Y-%m')作为周期,sum(efectivo)as ingresos)”); $ query-> joinWith(['user']);并显示此错误------>语法错误或访问冲突:1582调用本机函数'date_format'和单独的查询sql sum中的参数计数不正确。它的工作 –

+0

我想每月制作一个图表。我尝试关系总和和groupby。 like public function getPagosingMonth() { return $ this-> hasMany(Pagosing :: className(),['user_id'=>'id']) - > sum('efectivo + valesotros') - > groupBy('date_format (created_at,“%Y-%m”)AS periodo,'); }并得到这个错误 - 调用成员函数groupBy()on string –