Laravel Sum列数据库Eloquent

时间:2017-03-03 05:57:07

标签: mysql laravel eloquent

尝试在我的一个表中获取int字段的总和应该非常简单,不幸的是,不管我使用Laravel,MySQL还是Excel都会得到不同的结果。

Laravel 5.4给了我 20506

Table::sum('field_name');

MySQL给了我 1830

Select sum(field_name) from table;

将Excel表格中的数据导入数据库之前: Sum给了我 145689

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

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

17906774
99630157
28581131

159551532
20312892
668928885

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

尝试

class Form < ActiveRecord::Base
end

class FormA < Form
  def transform_to_pdf
  end 

  private

  REVISION_TO_IMPLEMENTATION_MAP = {
    1 => FormAImplementationV1,
    2 => FormAImplementationV2
  }  

  def implementation
    klass = REVISION_TO_IMPLEMENTATION_MAP[revision]
    klass.new(self)
  end

end

class FormAImplementation 
  def initialize(model)
  end
end
class FormAImplementationV1 < FormAImplementation
  def transform_to_pdf
  end   
end
class FormAImplementationV2 < FormAImplementation
  def transform_to_pdf
  end   
end

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

答案 2 :(得分:0)

您可以使用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

由于