Подтвердить что ты не робот

Подсчитайте количество записей в репозитории Ecto

Каков самый быстрый способ увидеть количество записей в моей базе данных? Я хотел бы видеть количество сообщений в моем сообщении/индексном представлении.

Скажем, у меня есть модель Post и куча сообщений, сохраненных в моей базе данных. В Rails я мог бы сделать что-то подобное в файле вида:

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

или

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

или

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

Что эквивалентно эквиваленту Phoenix Framework/Elixir?

4b9b3361

Ответ 1

Если вы уже загрузили сообщения в память вашего контроллера с помощью Repo.all, вы можете использовать length/1 для подсчета количества элементов в списке. Это эквивалентно .length в Ruby/Rails.

length(@posts)

Если вы хотите запустить запрос подсчета в базе данных, вы можете сделать:

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

Вы также можете добавить фильтр where: к запросу, чтобы ограничить сообщения, например. созданный конкретным пользователем. Это эквивалентно выполнению .count в Rails.

Ответ 2

Параметры, которые Dogbert предоставили, являются правильными и должны использоваться для Ecto 1.x.

В Ecto 2.0 вы можете использовать Repo.aggregate/4

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