我们说我有一张桌子
Date Item Qty
15/1/2016 Item1 10
16/1/2016 Item1 20
16/2/2016 Item1 30
18/2/2016 Item1 10
在报告中,我希望显示如下
Month Qty
01-2016 30
02-2016 40
请告诉我如何在Yii2中执行此操作。
我在我的SearchModel中尝试了以下内容。
$query = Productsalesdetails::find()
->select(['DATE_FORMAT(date, "%m-%Y"),productname,sum(total) as total'])
->groupBy('DATE_FORMAT(date, "%m-%Y")');
答案 0 :(得分:2)
对于查询,请使用letteral select和date_format的别名..
$query = Productsalesdetails::find()
->select( 'DATE_FORMAT(date, "%m-%Y") as m_date, productname, sum(total) as total')
->groupBy ('m_date, productname');
如果您已经选择了格式,则可以使用属性中的别名
<?= GridView::widget([
'dataProvider' => $dataProvider,
'summaryOptions' => ['class' =>'dfenx_pagination_summary',],
'pager' => ['options' => ['class'=> 'pagination pull-right']],
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'attribute' => '',
'label' => 'Month',
'value' => function ($model) {
return $model->m_date;
},
],
[
'attribute' => 'productname',
'label' => 'Item',
],
[
'attribute' => '',
'label' => 'Total',
'value' => function ($model) {
return $model->total;
},
],
....
]);
这应该可以在不为别名添加模型中的$ var的情况下工作。 否则你需要你的模型
class YourModel extends \yii\db\ActiveRecord
{
public $m_date;
public $total;
.....