计算Ecto存储库中的条目数

时间:2016-04-17 23:12:45

标签: elixir phoenix-framework ecto

查看数据库中条目数的最快方法是什么?我希望在帖子/索引视图中看到帖子数量。

说我有一个Post模型和一堆保存在我的数据库中的帖子。在Rails中,我可以在视图文件中执行以下操作:

<h1><%= @posts.length %> Posts</h1>

<h1><%= @posts.size %> Posts</h1>

<h1><%= @posts.count %> Posts</h1>

Phoenix Framework / Elixir的等价物是什么?

2 个答案:

答案 0 :(得分:65)

Dogbert提供的选项都是正确的,应该用于Ecto 1.x.

在Ecto 2.0中,您可以使用Repo.aggregate/4

Repo.aggregate(Post, :count, :id)

答案 1 :(得分:29)

如果您已使用Repo.all在控制器的内存中加载了帖子,则可以使用length/1来计算列表中的项目数。这相当于Ruby / Rails中的.length

length(@posts)

如果你想在数据库中运行计数查询,你可以这样做:

Repo.one(from p in Post, select: count("*"))

您还可以在查询中添加where:过滤条件,以便将帖子限制为例如由特定用户创建。这相当于在Rails中执行.count