在Eloquent Collections中求和并加倍?

时间:2016-04-29 13:57:04

标签: laravel eloquent

我有一张发票数据库表和一张发票头寸(基本上是标题,价格和数量)。现在我想得到发票的总金额。

以下SQL查询可以正常工作:

SELECT *, SUM(invoice_positions.price * invoice_positions.quantity) as total FROM `invoices` LEFT JOIN invoice_positions ON invoice_positions.invoice_id = invoices.id WHERE date = '2015-07-20'

在laravel的雄辩模型中获得相同结果的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用DB外观,虽然有一点魔力但你可以在Invoice模型上实际执行此操作(但这更复杂,不必要)。

这里的诀窍是在DB::raw方法中使用sum

$total = DB::table('invoices')
            ->leftJoin('invoice_positions', 'invoice_positions.invoice_id', '=', 'invoices.id')
            ->where('invoices.date', '2015-07-20')
            ->sum(DB::raw('invoice_positions.price * invoice_positions.quantity'))