计算 Ecto 存储库中的条目数

Count the Number of Entries in an Ecto Repository

查看数据库中条目数的最快方法是什么?我想在我的 posts/index 视图中查看帖子数。

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

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

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

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

Phoenix Framework/Elixir 相当于什么?

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

中的 .length
length(@posts)

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

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

您还可以将 where: 过滤器添加到查询以限制帖子,例如由特定用户创建。这相当于在 Rails.

中执行 .count

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

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

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