【问题标题】:Calculate the total of amount by category in Laravel在 Laravel 中按类别计算总金额
【发布时间】:2020-10-15 07:26:49
【问题描述】:

我做这个查询:

$expenses = Expense::where('team_id', Auth::user()->currentTeam->id)
            ->with(['categories'])
            ->orderBy('entry_date', 'DESC')
            ->get();

ExpenseSumByCategoryResource :

return [
            'id'         => Hashids::encode($this->id),
            'entry_date' => $this->entry_date,
            'amount'     => $this->amount,
            'category' => $this->category->name
 ];

回应:

"expenses": [
        {
            "id": "GO3W1MkgWkngpnByQ6",
            "entry_date": "2020-10-14",
            "amount": "50.00",
            "category": "Health"
        },
        {
            "id": "7vK6bz0gnG7JBOYRLD",
            "entry_date": "2020-10-14",
            "amount": "30.00",
            "category": "Uncategorize"
        },
        {
            "id": "7vK6bz0gnG7JBOYRLD",
            "entry_date": "2020-10-14",
            "amount": "30.00",
            "category": "Health"
        },
        {
            "id": "7vK6bz0gnG7JBOYRLD",
            "entry_date": "2020-10-14",
            "amount": "30.00",
            "category": "Food"
        },
    ]

我想按类别计算“金额”的总和。

理想情况下,我希望得到这样的结果:

"expenses": [
        {
            "category": "Health"
            "total_amount": "80.00",
        },
        {
            "category": "Uncategorized"
            "total_amount": "30.00",
        },
        {
            "category": "Food"
            "total_amount": "30.00",
        },
    ]

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    您可以尝试添加对您的查询有意义的select()groupBy()

    $expenses = Expense::select('category', DB::raw('SUM(amount) AS total_amount'))
        ->where('team_id', Auth::user()->currentTeam->id)
        ->groupBy('category')
        ->with(['categories'])
        ->orderBy('category')
        ->get();
    

    【讨论】:

    • 您好!它不起作用,因为如我的示例所示,我正在使用资源文件来调用“类别”
    • 我帮不了你。看看你能不能让我的答案发挥作用。