我是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,名称,种类)
当使用聚合方法时,不需要使用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
如果需要在正常选择其他列的同时选择一列的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();
您可以在Laravel查询生成器/Eloquent中获得一些列,如下所示。
$data=Model::where('user_id','=',$id)->sum('movement');
return $data;
您可以在您的记录中添加任何条件。由于
MyModel::where('user_id', $_some_id)->sum('amount')