【发布时间】:2018-05-10 13:30:06
【问题描述】:
我试图找出有多少项目属于特定用户。
我知道您可以这样做来获取模型的计数:
count = User |> Repo.aggregate(:count, :id)
但是我如何才能找到属于该用户的项目数?
【问题讨论】:
标签: elixir phoenix-framework ecto
我试图找出有多少项目属于特定用户。
我知道您可以这样做来获取模型的计数:
count = User |> Repo.aggregate(:count, :id)
但是我如何才能找到属于该用户的项目数?
【问题讨论】:
标签: elixir phoenix-framework ecto
这里有一种方法:获取用户,使用 assoc/2 为其关联创建查询,然后按照您现在的方式计算它:
User |> Repo.get(123) |> assoc(:projects) |> Repo.aggregate(:count, :id)
【讨论】:
Ecto.assoc/2,以防万一。
Projects 表属于users 表,因此它具有外键,因此您可以在project.user_id == ^user_id 的项目模型上进行聚合计数
import Ecto.Query
def count(user_id: user_id) do
query = from project in Project,
where: project.user_id == ^user_id
Repo.aggregate(query, :sum, :amount)
end
【讨论】: