2017-02-09 27 views
1

這是我的表:如何添加兩個值,並執行其中條件laravel雄辯

id  remaining_amount  additional_amount 
1    200     0 
2    100    -100 
3    300     100 
4    200     -50 

我試圖讓具有remaining_amount的總和 + additional_amount行> 0 。

$result = $this->model->where('remaining_amount' + 'total' > 0)->get(); 

它沒有工作。然後我試着這樣:

$result = DB::table('cash')->select(DB::raw('remaining_amount+additional_amount AS total')) 
       ->where('total','>',0) 
       ->get(); 

它也行不通。

請告訴我解決這個問題的方法。

+0

你不能在計算值的條件下執行 –

+0

爲什麼不使用聚合方法求和 –

回答

1

您無法執行計算值的條件。嘗試使用filterlaravel collection獲得所需的輸出。

$result = DB::table('cash') 
    ->select(DB::raw('(remaining_amount+additional_amount) AS total')) 
    ->get(); 

進行濾波

return collect($result)->filter(function($value){ 
    return $value->total > 0; 
})->values()->all(); 
0

我想你sohuld使用聚合方法總結爲

$result = DB::table('cash')->SELECT SUM(remaining_amount)+additional_amount AS total')->where('total','>',0)->get(); 

希望它會爲你工作

0

試試這個使用whereRaw

$query = DB::table('cash') 
    ->whereRaw("(remaining_amount+additional_amount AS total) > 0)") 
    ->get(); 
0
$result = DB::table('cash')->get(); 

$result = collect($result)->filter(function($value){ 
    return $value->remaining_amount + $value->additional_amount > 0; 
    })->values()->all(); 

明白了。謝謝