#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 из функции баланса