我想将yii2网格中的两列相乘网格视图如下
<?= GridView::widget([
//'dataProvider' => $dataProvider,
'dataProvider'=>new ActiveDataProvider([
'query' => Adanalytics::find()->
where(['publisher_id' => Yii::$app->user->identity->id ])->
select('id,ad_id,MAX(impression) AS impression, MAX(view) AS view, MAX(clicks) AS clicks,MAX(cpc) AS cpclick,MAX(cpv) AS cpview, (MAX(clicks)*MAX(cpc)) AS totalccost')->
groupBy('ad_id, visitor_ip'),
]),
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
//'id',
'ad_id',
//'advertiser_id',
//'publisher_id',
//'visitor_ip',
//'type_ad',
'impression',
'view',
'clicks',
//'placed_date',
//'cpc',
//'cpv',
'cpclick',
'cpview',
'totalccost',
//'cpi',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
但是它没有给我想要的输出,我哪里出错了,我怎么能这样做呢?
3条答案
按热度按时间fnvucqvd1#
我已经用yii2db查询解决了这个问题。
并在网格视图中调用列。
在调用之前在模型中定义它们。
klr1opcd2#
如果只需要该列作为gridview中的显示值,则可以创建计算列。
或者你可以在adanalytics类的开始添加
0x6upsns3#
如果您想在任何地方使用计算,您可以执行以下操作。在您的模型中
你可以给这个属性添加标签
在网格视图列中
您可以在任何地方使用此函数作为$model->totalcost