Laravel Query Builder - sum()方法问题

时间:2015-05-24 15:04:58

标签: php mysql database laravel query-builder

Ehi那里,我是laravel的新手,我在laravel查询构建器方面遇到了一些问题。 我想建立的查询就是这个:

SELECT SUM(transactions.amount)
FROM transactions
JOIN categories
ON transactions.category_id == categories.id 
WHERE categories.kind == "1"

我试过建立这个但是没有用,我无法弄清楚我错在哪里。

$purchases = DB::table('transactions')->sum('transactions.amount')
    ->join('categories', 'transactions.category_id', '=', 'categories.id')
    ->where('categories.kind', '=', 1)
    ->select('transactions.amount')
    ->get();

我想获得属性“kind”等于1的所有事务并将其保存在变量中。 这是db结构:

  

交易( ID ,名称,金额, category_id

     

类别( id ,名称,种类)

4 个答案:

答案 0 :(得分:12)

使用聚合方法select()时,您不需要使用get()sum

$purchases = DB::table('transactions')
    ->join('categories', 'transactions.category_id', '=', 'categories.id')
    ->where('categories.kind', '=', 1)
    ->sum('transactions.amount');

了解详情:http://laravel.com/docs/5.0/queries#aggregates

答案 1 :(得分:2)

您可以在 Laravel 查询构建器/Eloquent 中获取一些列,如下所示。

$data=Model::where('user_id','=',$id)->sum('movement');
return $data;

您可以在记录中添加任何条件。 谢谢

答案 2 :(得分:0)

如果需要选择一列的SUM以及其他常规选择的列,则可以使用DB::raw方法对选择的列求和:

DB::table('table_name')
    ->select('column_str_1', 'column_str_2', DB::raw('SUM(column_int_1) AS sum_of_1'))
    ->get();

答案 3 :(得分:0)

查询构建器的汇总方法为:

//... parse input 
try (Producer<String, String> producer = new KafkaProducer<>(props)) {
//... send record 
} 

您可以使用like

  1) max() 
  2) min()  
  3) sum()  
  4) avg()   
  5) count()