php - 如何在 laravel 中对 groupBy 查询求和列?
问题描述
我在数据库中有多个具有相同产品名称的记录。现在我希望所有记录都应该出现一次,但它们的数量列应该被总结。我想按月和按年汇总数量。
它基本上会按年和月显示产品的摘要。
订单表迁移
public function up()
{
Schema::create('orders', function (Blueprint $table) {
$table->id();
$table->string('amzid',500)->nullable();
$table->string('samid',500)->nullable();
$table->string('quantity',500)->nullable();
$table->string('samq',500)->nullable();
$table->text('samp',5000)->nullable();
$table->text('same')->nullable();
$table->string('pname',7000)->nullable();
$table->text('note')->nullable();
$table->timestamps();
});
}
这是虚拟查询,我不知道如何开始
Order::groupBy('pname')->sum('quantity')->lastthirtyDay() ??
解决方案
尝试在集合上使用 groupBy
$last30Days = Instock::whereDate('created_at', '>', now()->subMonth())->get()
->groupBy('pname')
->mapWithKeys(function($item, $pname){
return [$pname => $item->sum('quantity')];
});
$lastOneYear = Instock::whereDate('created_at', '>', now()->subYear())->get()
->groupBy('pname')
->mapWithKeys(function($item, $pname){
return [$pname => $item->sum('quantity')];
});
顺便说一下数量列应该是数字类型,如整数和无符号。
对于任何需要包含超过 255 个字符的列,请使用 text/mediumText/longText 作为列数据类型。
Laravel 文档:https ://laravel.com/docs/8.x/migrations#available-column-types
推荐阅读
- ios - 在 iOS 文件中查找未使用的常量
- elasticsearch - Elastic 2.4 通配符查询结果顺序与插入顺序不同
- excel - rg.NumberFormat = "0" 显示对象变量或块变量未设置错误 VBA
- vba - 在 Internet Explorer 自动化期间抑制打印对话框
- html - 单击按钮调整段落大小
- python-3.x - 如何在 2d 嵌套 for 循环理解中成为 Pythonic
- jquery - jQuery:无法获取同名选择框的值
- reactjs - FlatList 没有被渲染
- javascript - 无法识别的内容安全策略指令“reflected-xss”
- javascript - DataTables:如何将文本和水平滚动条包装在一起