2017-01-19 5 views
0

この問題の解決方法はわかりません。Laravel 5.3集計とアクセサー

class Transaction extends Model{ 
    public function getTransSubtotalAttribute($value){ 
     return number_format($value, 2, '.', ','); 
    }   
} 

I集約sum

<p><strong> Total Subtotal: {{ $trans->sum('trans_subtotal') }}</strong></p> 

を使用した後、それは整数に変化します。たとえば、3366.00の場合、出力は3だけです。 accessorを削除した場合は、accessorが削除されます。3366.00

+0

代わりに、アクセサをスキップし、合計を計算してから数値形式を使用してみてください。 –

+0

アクセサーからどのようにエスケープできますか? – Rbex

+0

モデルからデータを取得する方法を投稿できますか?それに基づいて私はあなたを助けます。 –

答えて

1

$ trans変数を使用しているとします。 laravelコレクションを使用して合計を取得できます。

$total = collect($trans)->map(function($value){ 
    return $value->getOriginal('trans_subtotal'); 
})->sum(); 

その後、

number_format($total, 2, '.', ','); 

編集などの利用をnumber_format:

$value->getSum($trans, 'trans_subtotal'); 
と同じようにアクセスして次に

public function getSum($trans, $field){ 
    $total = collect($trans)->map(function($value) use ($field) { 
     return $value->getOriginal($field); 
    })->sum(); 
    return number_format($total, 2, '.', ','); 
} 

をモデル化するためにgetSumを追加します

+1

誰かがこれに遭遇する場合は、私の完全な解決策です。 'パブリック関数getOriginalValue($トランス、$フィールド){ \t \t $合計=集める($トランス) - >マップ(関数($値)($フィールドを使用){ \t \t \t \t戻り$値 - > getOriginal ($フィールド); \t \t \t \t}) - > sum(); \t \t return number_format($ total、2、 '。'、 '、'); @Saravanan Sampathkumarへのクレジット。 "$ subtotal = $ this-> getOriginalValue($ trans、 'trans_subtotal');' @Saravanan Sampathkumarへのクレジット。 \t – Rbex

+1

モデルを作成してアクセスするgetOriginalを追加すると、Illuminate \ Database \ Eloquent \ Modelファイル –

+0

のデフォルトのgetOriginalメソッドがオーバーライドされます。 –