【问题标题】:Query with sum many columns from same table with laravel query使用 laravel 查询对同一张表中的许多列进行总和查询
【发布时间】:2017-07-19 11:22:14
【问题描述】:

这似乎很容易查询,但无法将其转换为 laravel 查询。我有表orders 有两列total_usdtotal_gbp。我想对每一列求和以获得页面上的总美元和总 gbp。

此查询在 phpmyadmin 中运行,我得到了正确的结果

SELECT sum(order_total_usd) as usd, sum(order_total_gbp) as gbp FROM `orders`

在 laravel 我试过这个

$sumOrders = Order::select('sum(order_total_gbp) as gbp, sum(order_total_usd) as usd');

当我dd($sumOrders) 我有一个非常大的输出几乎导致浏览器冻结。 我的错在哪里?

【问题讨论】:

    标签: laravel


    【解决方案1】:

    你可以试试这样的

    $sumOrders = Order::select( \DB::raw("sum(order_total_gbp) as gbp"),  \DB::raw("sum(order_total_usd) as usd"))->get();
    

    【讨论】:

    • 好的,谢谢。现在,当我 dd($sumOrders['gbp']) 以访问 gdp 的总和时,我得到了 Undefined index: gdp
    • 你必须得像$sumOrders->gdp
    • 当我 dd($sumOrders->gbp) 时,我得到了 ErrorException: Undefined property: Illuminate\Database\Eloquent\Builder::$gbp。当我dd($sumOrders) 时,我有一个相对较长的数组,在里面我可以看到array(2) { ["gbp"]=> float(0.43829558) ["usd"]=> float(27) }
    • 好的,让它工作。我最后将->get() 更改为->first(),现在正在工作。谢谢
    • @Ivan 很高兴我能帮上忙! :) –
    【解决方案2】:

    你可以使用 selectRaw

    $sumOrders = Order::selectRaw('sum(order_total_gbp) as gbp, sum(order_total_usd) as usd');
    

    【讨论】:

    • 谢谢,但这次又回来了ErrorException: Undefined property: Illuminate\Database\Eloquent\Builder::$gbp
    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 2017-04-04
    • 2016-09-25
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    相关资源
    最近更新 更多