Laravel Query Builder - sum()方法问题

bur*_*n15 4 php mysql database query-builder laravel

Ehi那里,我是laravel的新手,我对laravel查询构建器有一些问题.我想构建的查询是这样的:

SELECT SUM(transactions.amount)
FROM transactions
JOIN categories
ON transactions.category_id == categories.id 
WHERE categories.kind == "1"
Run Code Online (Sandbox Code Playgroud)

我尝试构建这个但是没有工作,我无法弄清楚我错在哪里.

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

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

交易(id,name,amount,category_id)

类别(id,name,kind)

Lim*_*nte 12

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

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

阅读更多:http://laravel.com/docs/5.0/queries#aggregates


Yog*_*try 12

如果需要选择SUM一列以及其他列的正常选择,您可以使用DB::raw方法sum 选择该列:

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


Muh*_*ram 6

您可以在 Laravel 查询生成器/Eloquent 中获取任何列的一些内容,如下所示。

$data=Model::where('user_id','=',$id)->sum('movement');
return $data;
Run Code Online (Sandbox Code Playgroud)

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