Как сгруппировать вывод в GridView Yii2?

117
31 октября 2019, 01:20

Нужно сгруппировать данные относитьльно пользователей. Вот фрагмент данных

    id        customer_name                total      balance  qb_id
'14781', 'Alexandr Palagin (#30076391)', '6533.00', '80.00', '259825'
'14781', 'Alexandr Palagin (#30076391)', '6747.65', '54.65', '262851'
'14781', 'Alexandr Palagin (#30076391)', '12573.00', '12573.00', '263339'
'14781', 'Alexandr Palagin (#30076391)', '6383.00', '6383.00', '264166'

Должны ,примерно, получить такое:

Alexandr Palagin (#30076391)    Dec 27, 2018 / B-132024 /   6,533.00    80.00
                                Jan 8, 2019 / B-133108 /    6,747.65    54.65
                                Jan 10, 2019 / B-133259 /   12,573.00   12,573.00
                                Jan 11, 2019 / B-133579 /   6,383.00    6,383.00
Summary (Alexandr Palagin (#30076391))      32,236.65   19,090.65

Использовать нужно только yii\grid\GridView! \kartik\grid\GridView - не используем(по разным причинам: одна из них - весь js изолирован, глобально ничего не должно быть(p.s. почему - хз))

$columns = [
    [
        'attribute'  => 'customer_name',
        'value' => function ($model, $key, $index, $widget) {
            return $model->customer_name;
        },
    ],
    [
        'attribute' => 'qb_id',
        'label' => 'Invoice Due Date',
        'format' => 'raw',
        'value' => function ($data) {
            return   $data->qb_id
        },
    ],
    'total',
    'balance',
];
        echo GridView::widget([
                'dataProvider' => $dataProvider,
                'layout' => $gridSummaryTemplate . '{items}' . $gridSummaryTemplate,
                'pager' => [
                    'maxButtonCount' => 5
                ],
                'columns' => $columns,
                'showFooter' => true,
            ]);
Answer 1

ну делать это в GridView затея не очень, так как если у вас 4 персоны по 5 записей, а по дефолту пагинации 20 записей на страницу, то на разных страницах может отфанарное количество строк. хороший вариант собрать это все непосредствено в красивый https://www.yiiframework.com/doc/api/2.0/yii-data-arraydataprovider и потом уже передать его в GridView

  [
    'attribute' => 'qb_id',
    'label' => 'Invoice Due Date',
    'format' => 'raw',
    'value' => function ($data) {
      $result = [];
      foreach ($data as $item) {
        $result[] = перебрать сформировать то что вам нужно
      }
      return implode('<br>', $result);
    },
  ],

что-то типа этого

READ ALSO
Низкоуровневый звуковой API в Linux

Низкоуровневый звуковой API в Linux

Как в Linux возможно низкоуровнево отрендерить звук? (отослать на звуковое устройство частоту звука и воспроизвести её)

137
Помогите добавить условие в функцию [закрыт]

Помогите добавить условие в функцию [закрыт]

Помогите правильно добавить условие сортировки от 1 найденного четного числа в массиве до последнего, те

141