Elixir/Phoenix总和列

Ily*_*lya 0 elixir elixir-framework phoenix-framework

我正在尝试获取特定列的总和.我有一个订单模式,字段总数,存储总价格.现在我正在尝试创建一个查询,它将总计所有订单的总价值,但不确定我是否做得对.这是我到目前为止:

def create(conn, %{"statistic" => %{"date_from" => %{"day" => day_from, "month" => month_from, "year" => year_from}}}) do

date_from = Ecto.DateTime.cast!({{year_from, month_from, day_from}, {0, 0, 0, 0}})
revenue = Repo.all(from p in Order, where: p.inserted_at >= ^date_from, select: sum(p.total))

render(conn, "result.html", revenue: revenue)
end
Run Code Online (Sandbox Code Playgroud)

只是<%= @revenue %>在html.eex中调用它.截至目前,它不会返回错误,只是在页面上呈现随机符号,而不是总收入.

我认为我的查询是错误的,但无法找到有关如何使其正常工作的良好信息.任何帮助表示感谢,谢谢!

Dog*_*ert 5

您的查询只返回1个值,并将其Repo.all包装在列表中.当您使用打印列表时<%= ... %>,它会将列表中的整数视为Unicode代码点,并且您将获得带有该代码点的字符作为页面上的输出.修复是使用Repo.one,它将直接返回值,在这种情况下是一个整数.

revenue = Repo.one(from p in Order, where: p.inserted_at >= ^date_from, select: sum(p.total))
Run Code Online (Sandbox Code Playgroud)