Search code examples
elixirphoenix-frameworkecto

Count the Number of Entries in an Ecto Repository


Whats the quickest way to see the number of entries in my database? I'd like to see the number of posts in my posts/index view.

Say I have a Post model and a bunch of posts saved in my database. In Rails I could do something like this in a view file:

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

or

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

or

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

What's the Phoenix Framework/Elixir equivalent?


Solution

  • If you've already loaded the posts in memory in your controller using Repo.all, you can use length/1 to count the number of items in the list. This is equivalent to .length in Ruby/Rails.

    length(@posts)
    

    If you want to run the count query in the database instead, you can do:

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

    You can also add where: filter to the query to restrict the posts to e.g. created by a specific user. This is equivalent to doing .count in Rails.