2015-05-20 3 views
0

У меня есть таблица с именем transactions в базе данных mysql, и я собираюсь использовать Larvel's Eloquent ORM (Laravel 5), чтобы получить сумму умноженного столбца (jumlah) и (harga), это то, что выглядит моя таблица так:Laravel Яркая сумма умноженных столбцов

+----+----------+-------------+--------+---------+------------+---------------------+---------------------+ 
| id | order_id | nama_barang | jumlah | harga | keterangan | created_at   | updated_at   | 
+----+----------+-------------+--------+---------+------------+---------------------+---------------------+ 
| 4 |  3 | PS 4  |  2 | 4500000 | Hitam  | 2015-05-20 08:55:26 | 2015-05-20 08:56:14 | 
+----+----------+-------------+--------+---------+------------+---------------------+---------------------+ 

И я хочу, чтобы получить результат что-то вроде этого:

select sum(jumlah * harga) from transactions; 
+---------------------+ 
| sum(jumlah * harga) | 
+---------------------+ 
|    9000000 | 
+---------------------+ 

Как сделать это с ОРМ Laravel, я попытался это одно, но это дает мне 0:

$amount = Transaction::all()->sum('(jumlah * harga)'); 

ответ

5

Использование Try это

$amount = Transaction::select(DB::raw('sum(jumlah * harga) as total'))->get(); 
+1

Дайте мне ошибку :( – cakil

+0

, что ошибка, которую вы показываете? –

+0

синтаксическая ошибка, неожиданное ';' Я думаю, что ему нужна закрывающая скобка. – cakil

0

Вы должны использовать метод DB::raw здесь:

Transaction::all()->select(DB::raw('sum(jumlah * harga) AS sum_of_jumlah_harga')) 
+0

Это также дает мне ошибку: вызов неопределенного метода Illuminate \ Database \ Eloquent \ Collection :: select() – cakil

1

Красноречивый стиль, как показано ниже:

$amount = Transaction::all()->sum(function($t){ 
    return $t->jumlah * $t->harga; 
}); 
Смежные вопросы