Quelle est la façon la plus rapide de voir le nombre d'entrées dans ma base de données? Je voudrais voir le nombre de publications dans ma vue publications/index.
Disons que j'ai un modèle de publication et un tas de publications enregistrées dans ma base de données. Dans Rails je pourrais faire quelque chose comme ça dans un fichier de vue:
<h1><%= @posts.length %> Posts</h1>
ou
<h1><%= @posts.size %> Posts</h1>
ou
<h1><%= @posts.count %> Posts</h1>
Qu'est-ce que l'équivalent Phoenix Framework/Elixir?
Si vous avez déjà chargé les messages en mémoire dans votre contrôleur à l'aide de Repo.all
, vous pouvez utiliser length/1
pour compter le nombre d'éléments dans la liste. Cela équivaut à .length
en Ruby/Rails.
length(@posts)
Si vous souhaitez plutôt exécuter la requête de comptage dans la base de données, vous pouvez:
Repo.one(from p in Post, select: count("*"))
Vous pouvez également ajouter where:
filtrez la requête pour restreindre les publications, par exemple créé par un utilisateur spécifique. Cela revient à faire .count
dans Rails.
Les options fournies par Dogbert sont à la fois correctes et doivent être utilisées pour Ecto 1.x.
Dans Ecto 2.0, vous pouvez utiliser Repo.aggregate/4
Repo.aggregate(Post, :count, :id)