【问题标题】:Laravel Sum column database EloquentLaravel Sum 列数据库 Eloquent
【发布时间】:2017-07-23 03:17:03
【问题描述】:

尝试在我的一个表中获取一个 int 字段的总和应该很容易,不幸的是,无论我使用 Laravel、MySQL 还是 Excel,这并不是因为我得到了不同的结果。

Laravel 5.4 给了我20506

Table::sum('field_name');

MySQL 给了我1830

Select sum(field_name) from table;

以及将 Excel 工作表中的数据导入数据库之前: 总和给了我 145689

有什么想法吗?我尝试在求和之前转换为整数,但它不起作用。 所有数字都很大,但不包含逗号或点。

我必须求和的值示例:(有时包含空单元格)

17906774
99630157
28581131

159551532
20312892
668928885

【问题讨论】:

  • 如果你在 laravel 中对所有行进行 foreach 总和会得到什么?

标签: mysql laravel eloquent


【解决方案1】:
$query = YourModel::query();
$query->withCount([
'activity AS yoursum' => function ($query) {
        $query->select(DB::raw("SUM(amount_total) as paidsum"))->where('status', 'paid');
    }
]);

【讨论】:

  • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。一个正确的解释would greatly improve 它的长期价值通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。
  • 我同意 Toby 的观点,我可以看到多年后没有添加任何解释。这就是我投反对票的原因。
【解决方案2】:

您可以将 laravel 聚合函数 SUM 用作:

$result = DB::table('table_name')
                ->select(DB::raw('SUM(field_name) as total_field_name'))
                ->get();

更多详情可以关注:

https://laravel.com/docs/5.4/queries

谢谢

【讨论】:

  • 很遗憾,结果并没有改变。
【解决方案3】:

试试

$result = DB::table(tablename)
->selectRaw('sum(column)')
->get();

如果它仍然给你错误的结果,也许等待有人给你一个更好的答案。这就是我能想到的。

【讨论】:

  • 这给了我与 SQL 查询相同的结果:Select sum(field_name) from table;
猜你喜欢
  • 2014-03-07
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 2019-07-18
  • 1970-01-01
  • 2021-11-08
相关资源
最近更新 更多