Php 当值为负值时,laravel sum集合忽略

Php 当值为负值时,laravel sum集合忽略,php,laravel,Php,Laravel,我使用的是laravel sum方法,但当我为2项的总和返回-1值时,它返回0.2,如果下面是我的代码,我希望忽略该总和: return (object) [ 'sum_of_prices' => $group->sum('sales_price'), 'sum_of_fullboard' => $group->sum('full_board_price'), '

我使用的是laravel sum方法,但当我为
2
项的总和返回
-1
值时,它返回
0.2
,如果下面是我的代码,我希望忽略该总和:

    return (object) [
                 'sum_of_prices' => $group->sum('sales_price'),
                 'sum_of_fullboard' => $group->sum('full_board_price'),
                 'sum_of_halfboard' => $group->sum('half_board_price')
     ];

在这里,我想绕过负数结果之和,只传递负数或某个东西的默认值,只对posetive结果求和。

我假设您使用的是laravel集合

 return (object) [
             'sum_of_prices' => $group->filter(function($item){
                 return $item->sales_price >=0    
              })->sum('sales_price'),
             'sum_of_fullboard' => $group->filter(function($item){
                 return $item->full_board_price >=0    
              })->sum('full_board_price'),
             'sum_of_halfboard' => $group->filter(function($item){
                 return $item->half_board_price >=0    
              })->sum('half_board_price')
 ];

我假设您使用的是laravel collection

 return (object) [
             'sum_of_prices' => $group->filter(function($item){
                 return $item->sales_price >=0    
              })->sum('sales_price'),
             'sum_of_fullboard' => $group->filter(function($item){
                 return $item->full_board_price >=0    
              })->sum('full_board_price'),
             'sum_of_halfboard' => $group->filter(function($item){
                 return $item->half_board_price >=0    
              })->sum('half_board_price')
 ];

您可以使用
sum()
callback将负值更改为零:

return (object) [
    'sum_of_prices' => $group->sum(function ($item) {
        return $item->sales_price > 0 ? $item->sales_price : 0;
    }),
    'sum_of_fullboard' => $group->sum(function ($item) {
        return $item->full_board_price > 0 ? $item->full_board_price : 0;
    }),
    'sum_of_halfboard' => $group->sum(function ($price) {
        return $item->half_board_price > 0 ? $item->half_board_price : 0;
    })
];

您可以使用
sum()
callback将负值更改为零:

return (object) [
    'sum_of_prices' => $group->sum(function ($item) {
        return $item->sales_price > 0 ? $item->sales_price : 0;
    }),
    'sum_of_fullboard' => $group->sum(function ($item) {
        return $item->full_board_price > 0 ? $item->full_board_price : 0;
    }),
    'sum_of_halfboard' => $group->sum(function ($price) {
        return $item->half_board_price > 0 ? $item->half_board_price : 0;
    })
];