2016-10-12 110 views
1

我想從列中的事務表中顯示一個/所有帳戶的總餘額。餘額欄應顯示添加上一行總餘額的餘額。 我的GridView的代碼是Yii2 gridview自定義列值

<?php 
    $gridColumns = [ 
     ['class' => 'yii\grid\SerialColumn'], 
         '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; 
    } 

我想要顯示的結果是這樣 enter image description here

我想在我的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; 
          }, 
+0

你找到你的問題的解決方案? –

+0

祝你好運回答? –

回答

0

試試這個

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; 
} 
+0

得到「不在對象上下文中時使用$ this」錯誤。 – gojiraki

+0

從平衡功能中移除** static **關鍵字 – Mohan

2

試試這個

在GridView控件:

<?php 
$gridColumns = [ 
    ['class' => 'yii\grid\SerialColumn'], 
    '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; 
}