繁体   English   中英

Laravel 集合 group by

[英]Laravel collection group by

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

在此处输入图片说明

到现在为止还挺好。 我可以显示所有返回的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的名字,访问它,说我们需要第一个组,组中的第一个费用,

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM