如何添加两列值并执行laravel雄辩的条件

时间:2017-02-09 05:14:04

标签: php laravel eloquent

这是我的表:

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();

它也不起作用。

请告诉我解决这个问题的方法。

4 个答案:

答案 0 :(得分:1)

使用whereRaw

尝试此操作
$query = DB::table('cash')
    ->whereRaw("(remaining_amount+additional_amount AS total) > 0)")
    ->get();

答案 1 :(得分:0)

您无法在计算值的条件下执行。尝试使用filter中的laravel 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();

答案 2 :(得分:-1)

我认为你使用聚合方法总结为

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

希望它对您有用

答案 3 :(得分:-1)

$result = DB::table('cash')->get();

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

知道了。感谢