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

php - Laravel收集者-LMLPHP

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

Grouped Results (By Expense):

Description Name: <-- Issue displaying this
Total Expenses: 3
Total Amount: 53444

描述名称只能通过ExpenseDescription之间的关系来获取。费用属于描述。

在处理集合时,是否有可能达到我想要的目标,还是应该对这些结果执行单独的查询? (不需要的)

最佳答案

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

$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

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

关于php - Laravel收集者,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45359514/

10-11 12:29