2

我正在尝试使用 Yii2 框架开发系统。我的数据库中有数据,我想显示products表中的所有数据。例如:

产品表

---------------------------------------------------------------------
**id** | **product** | **color**   | **quantity**   |    **size**   |
  
  1    |    t-shirt  |     red     |       2        |     L         | 
  2    |    t-shirt  |     blue    |       3        |     M         |
  3    |    pants    |     black   |       6        |     M         |

我想将此数据显示到index.php 中的kartik gridview。但我想通过productnot显示数据id,所以我的预期结果是这样的 my index.php

预期结果

product   |   quantity    |   
  
 t-shirt  |      5        |   
 pants    |      6        | 

我的预期结果避免,颜色和大小。它将所有相同的产品合并到 gridview 的一列中。

我怎么会变成这样?这是我在index.php中的代码:

  <?php
   use kartik\grid\GridView;

  <?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn',
            'header' => 'No',
        ],
        [
            'label' => 'product',
            'value' => function($data) {
               return $data->product;
            }
        ],

        [
            'label' => 'quantity',
            'value' => function($data) {
               return $data->quantity;
            }
        ],
        ['class' => 'yii\grid\ActionColumn'],
    ],
    'toolbar' => [
        ['content' =>
            Html::a('<i class="glyphicon glyphicon-repeat"></i>', ['index'], ['data-pjax' => false, 'class' => 'btn btn-default', 'title' => 'Reset Grid'])
        ],
        '{export}',
        '{toggleData}'
    ],
    'panel' => [
        'heading' => '<i class="glyphicon glyphicon-align-left"></i>&nbsp;&nbsp;<b>Products List</b>',
        'before' => '', //IMPORTANT
    ],
]);
?>

如果我使用上面的代码,我会得到这样的结果:

    product   |   quantity    |   
      
     t-shirt  |      2        |
     t-shirt  |      3        |     
     pants    |      6        | 

任何帮助,将不胜感激。谢谢

4

1 回答 1

0

使用: http ://www.yiiframework.com/doc-2.0/yii-data-sqldataprovider.html

并在 sql 中使用 group by,count 等...

然后在 GridView 列中使用:

[
    'label' => 'product',
    'value' => function($data) {
        return $data['product'];
    },
],
于 2016-12-27T15:49:21.963 回答