【发布时间】:2021-12-30 15:14:49
【问题描述】:
在 Laravel 和 Livewire 中相当菜鸟,我想是否有更好的方法来完成我在这里的工作:
我在 Livewire 视图中有一些复选框,允许用户动态选择如何过滤 HTML 表中显示的数据。 在控制器上,我有一个雄辩的查询,只要复选框更改状态,它就会检索数据库中记录的子集。 像这样(我试图简化结构):
$filtered_items = Item::select('item_color', 'item_quantity', 'item_value')
->whereIn('item_color', [ /* array controlled by checkboxes values in view */ ])
->get();
我还需要显示特定过滤器设置的某些列的总和。
由于我不想进行新的查询,因此我尝试使用 ->sum() 为我想要求和的每一列处理已经可用的集合:
$sums['item_quantity'] = $filtered_items->sum('item_quantity');
$sums['item_value'] = $filtered_items->sum('item_value');
它按预期工作,因为我有一个包含总和的数组,但我想知道是否有更好的方法来做到这一点,或者甚至编写一个函数来一次获取更多列的总和,也许传递一个数组。
感谢您提供任何想法或链接!
【问题讨论】:
-
您需要查询返回的 items/item_colors 还是只需要总和?
-
理想情况下是一个以列名作为键,然后将整列的总和作为值的数组
标签: laravel eloquent laravel-livewire