2016-04-17 4 views
18

Wie kann ich am schnellsten die Anzahl der Einträge in meiner Datenbank sehen? Ich möchte die Anzahl der Posts in meiner Posts/Indexansicht sehen.Anzahl der Einträge in einem Ecto Repository zählen

Angenommen, ich habe ein Post-Modell und eine Reihe von Posts in meiner Datenbank gespeichert. In Rails kann ich so etwas wie dies in einer Ansicht Datei tun:

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

oder

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

oder

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

Was ist die Phoenix-Framework/Elixir gleichwertig?

Antwort

23

Wenn Sie die Posts bereits im Speicher unter Repo.all geladen haben, können Sie length/1 verwenden, um die Anzahl der Elemente in der Liste zu zählen. Dies entspricht .length in Ruby/Rails.

length(@posts) 

Wenn Sie den Zähler Abfrage in der Datenbank statt ausführen möchten, können Sie tun:

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

Sie auch where: Filter auf die Abfrage beispielsweise die Beiträge zu beschränken hinzufügen erstellt von einem bestimmten Benutzer. Dies entspricht dem Ausführen von .count in Rails.

53

Die von Dogbert bereitgestellten Optionen sind beide korrekt und sollten für Ecto 1.x verwendet werden.

In Ecto 2.0 können Sie Repo.aggregate/4

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

Dieser verwenden auch zusammensetzbare Abfragen erstellen hilft –