Как я могу сложить массив, как это в laravel - PullRequest
0 голосов
/ 06 марта 2020

Я возвратил это из двух строк в моей таблице, и я хочу иметь возможность отображать сумму в laravel blade.

["212,703.00","212,703.00"]

Я пытался, но не работает. имя столбца amount

 $investamount = DB::table('investment')->get();
 return $investamount->sum('amount');

Ответы [ 5 ]

1 голос
/ 06 марта 2020

Кажется, вы используете varchar для поля amount с запятой, тогда вы можете сделать это следующим образом

DB::table('investment')->select("SUM(REPLACE(amount, ',', '')") as total)->get()
0 голосов
/ 07 марта 2020

Этого можно добиться, используя laravel Коллекции . Затем сопоставьте элементы, чтобы заменить запятые.

Пример:

return collect(DB::table('investment')->select('amount')->get())->map(function ($item) {
  return str_replace(',', '', $item->amount);
})->sum(); //This will return 425406‬.00

Если вы хотите отобразить сумму с запятыми в своем шаблоне лезвия, вы можете использовать number_format()

Пример:

{{ number_format(sum, 2) }} //425,406‬.00
0 голосов
/ 06 марта 2020

Вот что вам нужно

return DB::table('investment')->get()->sum(function ($investment) {
    return (float) str_replace(',', '', $investment->amount);
});
0 голосов
/ 06 марта 2020

Вам нужно будет использовать array_reduce для специального формата, который у вас есть

$investamount = DB::table('investment')->pluck('amount')->toArray();
$investamount = array_reduce($investamount, function($carry, $item) {
    return $carry + str_replace(',','',$item);
});
0 голосов
/ 06 марта 2020

использование

$investamount = DB::table('investment')->sum('amount');

или

$investamount = DB::table('investment')->pluck('amount')->toArray();
$sum = array_sum($investamount);

РЕДАКТИРОВАНИЕ

$investamount = DB::table('investment')->select(DB::raw("SUM(amount) as sum"))->get();
return $investamount->sum;
...