Php 拉维收集组

Php 拉维收集组,php,laravel,Php,Laravel,我有一个搜索功能,可以搜索特定日期、月份、字符串等的费用。它返回一个集合: 到目前为止还不错。我可以显示所有返回的费用。现在,我想做的是,还显示一个总费用计数和总金额,按description\u id分组。如果我简单地执行$result->groupBy('description\u id),我只会得到一组集合,从中可以显示总计数和总金额,但不能显示描述的名称。我想要的示例: Grouped Results (By Expense): Description Name: <-- Is

我有一个搜索功能,可以搜索特定日期、月份、字符串等的费用。它返回一个集合:

到目前为止还不错。我可以显示所有返回的
费用
。现在,我想做的是,还显示一个总费用计数和总金额,按
description\u id
分组。如果我简单地执行
$result->groupBy('description\u id)
,我只会得到一组集合,从中可以显示总计数和总金额,但不能显示描述的名称。我想要的示例:

Grouped Results (By Expense):

Description Name: <-- Issue displaying this
Total Expenses: 3
Total Amount: 53444
分组结果(按费用):

描述名称:如果您渴望加载
描述
,则可以按集合的嵌套对象对结果集合进行分组。因此,您可能有:

$expenses = Expenses::with('description')->get(); //collection
然后将其分组:

$grouped = $expenses->groupBy('description.name'); 
//or
$grouped = $expenses->groupBy('description_id'); 
然后您可以使用描述的名称,访问它,说我们需要第一个组,以及组中的第一个费用

$description_name = $grouped
                    ->first() //the first group
                    ->first() //the first expense in group
                    ->description //the description object
                    ->name //the name

这只是一个小小的证据,证明您可以在集合中获取相关模型的名称,并使用它来解决您的问题。

我认为您应该在查询级别执行此操作,而不是在返回的集合上执行此操作。您可以简单地调用
DB::select('SUM(expenses)as total_expenses','SUM(amount)as total_amount')
。然后,
groupBy('description_name')
我会尝试一下,因为这似乎是我想做的最明显的事情:)也许您可以直接加载描述,以便在收集时,您有一个嵌套的对象/描述数组,该对象/描述数组已经可以访问(即使在groupBy之后)