2016-10-12 8 views
1

Ich möchte den Gesamtbetrag von einem/alle Konto aus meiner Transaktionstabelle in einer Spalte anzeigen. In der Spalte "Balance" sollte der Saldo angezeigt werden, der den Gesamtbetrag der vorherigen Zeile addiert. Mein gridview Code istYii2 Gridview benutzerdefinierte Spalte Wert

<?php 
    $gridColumns = [ 
     ['class' => 'yii\grid\SerialColumn'], 
         'account_no', 
         'credit', 
         'debit', 
         [ 
          'label' => 'Balance', 

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

und der Code in meinem Modell ist unten angegeben. Ich kann den ersten Zeilenwert erhalten, indem ich Deptransaction :: findOne (1) hartkodiere.

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

Ich möchte ähnliche enter image description here

das Ergebnis anzuzeigen ich den Code unten in meinem Gridview versucht, aber es Bilanz für die einzelnen Zeile angezeigt werden nur

'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

Haben Sie die Lösung für Ihr Problem finden? –

+0

irgendein glück ingetting antwort? –

Antwort

0

Versuchen Sie, diese

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

erhalten einen Fehler "Using $ this wenn nicht in Objektkontext". – gojiraki

+0

Entfernen Sie das ** statische ** Schlüsselwort aus der Balance-Funktion – Mohan

2

Versuchen Sie diese

In Gridview:

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

Modell:

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