如何使用日期格式在Yii2

时间:2016-02-24 17:17:07

标签: yii2 date-format

我们说我有一张桌子

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")');

1 个答案:

答案 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;
   .....