web-dev-qa-db-ja.com

Ectoリポジトリのエントリ数を数える

データベースのエントリ数を確認する最も簡単な方法は何ですか?投稿/インデックスビューで投稿の数を確認したい。

データベースに保存されている投稿モデルと多数の投稿があるとします。 Railsビューファイルで次のようなことができます:

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

または

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

または

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

Phoenix Framework/Elixirと同等のものは何ですか?

27
Andrew Hendrie

Repo.allを使用してコントローラーのメモリに投稿を既にロードしている場合、length/1を使用してリスト内のアイテムの数をカウントできます。これは、Ruby/Railsの.lengthと同等です。

length(@posts)

代わりにデータベースでカウントクエリを実行する場合は、次の操作を実行できます。

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

クエリにwhere:フィルターを追加して、投稿をたとえば特定のユーザーによって作成されます。これは、Railsで.countを実行するのと同じです。

29
Dogbert

Dogbert が提供するオプションは両方とも正しく、Ecto 1.xで使用する必要があります。

Ecto 2.0では、 Repo.aggregate/4 を使用できます

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