2016-04-17 21 views
18

Qual è il modo più rapido per vedere il numero di voci nel mio database? Mi piacerebbe vedere il numero di post nei miei post/vista indice.Contare il numero di voci in un repository Ecto

Dire che ho un modello Post e un gruppo di post salvati nel mio database. In Rails avrei potuto fare qualcosa di simile in un file di visualizzazione:

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

o

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

o

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

Qual è l'equivalente Phoenix quadro/Elixir?

risposta

23

Se hai già caricato i post nella memoria del controller utilizzando Repo.all, è possibile utilizzare length/1 per contare il numero di elementi nell'elenco. Questo è equivalente a .length in Ruby/Rails.

length(@posts) 

Se si desidera eseguire la query conteggio nel database invece, si può fare:

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

È inoltre possibile aggiungere where: filtro alla query per limitare i posti per esempio creato da un utente specifico. Questo è equivalente a fare .count in Rails.

53

Le opzioni fornite da Dogbert sono corrette e devono essere utilizzate per Ecto 1.x.

In Ecto 2.0 è possibile utilizzare Repo.aggregate/4

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

Questo aiuta anche a costruire query componibili –