Пользовательское значение столбца Yii2 gridview

#gridview #yii2

#просмотр сетки #yii2

Вопрос:

Я хочу отобразить общий баланс учетной записи / all из моей таблицы транзакций в столбце. В столбце баланс должен отображаться баланс, добавляющий общий баланс предыдущей строки. Мой код gridview

 <?php
     $gridColumns = [
        ['class' => 'yiigridSerialColumn'],
                        'account_no',
                        'credit',
                        'debit',
                        [
                            'label' => 'Balance',

                            'value' => function ($model) {
                                return $model::Balance();
                            }
                        ],
                        'created_date:date',
     ];
?>
  

и код в моей модели приведен ниже. Я могу получить значение первой строки, жестко запрограммировав Deptransaction::findOne(1) .

 public static function Balance()
    {

            $data = DepTransaction::find();

                if($data->credit != 0){ 
         $cap_bal = $cap_bal  ($data->credit - $data->debit);            
                }

                if($data->debit != 0){  
                    $int_bal = $int_bal   ($data->credit - $data->debit);  

                }
            $total = $cap_bal $int_bal;

        return $total;
    }
  

Я хочу отобразить результат следующим образом
введите описание изображения здесь

Я попробовал приведенный ниже код в своем gridview, но он отображает баланс только для отдельной строки

 'value' => function($data) {
                                if($data['head_type']=="CAP"){ 
                                    $cap_bal = $cap_bal  ($data['credit']-$data['debit']);           
                                }

                                if($data['head_type']=="INT"){  
                                    $int_bal = $int_bal ($data['credit']-$data['debit']);  
                                }
                                $total = $total   $cap_bal $int_bal;
                                return $total;
                            },
  

Комментарии:

1. Вы нашли решение своей проблемы?

2. есть какие-либо успехи в получении ответа?

Ответ №1:

В GridView:

 <?php
 $gridColumns = [
    ['class' => 'yiigridSerialColumn'],
    'account_no',
    'credit',
    'debit',
    [
       'label' => 'Balance',
       'value' => function ($model) {
           return $model->Balance();
       }
     ],
     'created_date:date',
 ];
?>
  

Модель:

 public function Balance()
{

    $data = DepTransaction::findOne($this->id);

    if($data->credit != 0){ 
       $cap_bal = $cap_bal  ($data->credit - $data->debit);            
    }

    if($data->debit != 0){  
       $int_bal = $int_bal   ($data->credit - $data->debit);  
    }

    $total = $cap_bal $int_bal;

    return $total;
}
  

Комментарии:

1. Спасибо, брат, это мне помогло.

Ответ №2:

Попробуйте это

 public static function Balance()
{

        $data = DepTransaction::find($this->id);

            if($data->credit != 0){ 
     $cap_bal = $cap_bal  ($data->credit - $data->debit);            
            }

            if($data->debit != 0){  
                $int_bal = $int_bal   ($data->credit - $data->debit);  

            }
        $total = $cap_bal $int_bal;

    return $total;
}
  

Комментарии:

1. получение ошибки «Использование $this, когда не в контексте объекта».

2. Удалить ключевое слово static из функции баланса