使用 ecto 计算关联的模型行
Counting associated model rows with ecto
我正在尝试查找属于特定用户的项目数量。
我知道您可以这样做来获取模型的计数:
count = User |> Repo.aggregate(:count, :id)
但是我如何找到属于该用户的项目数?
Projects
table 属于 users
table,因此它具有外键,因此您可以对 project.user_id == ^user_id
[ 所在的项目模型进行聚合计数=14=]
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
这是一种方法:获取用户,使用 assoc/2
为其关联创建查询,然后按照与现在相同的方式对其进行计数:
User |> Repo.get(123) |> assoc(:projects) |> Repo.aggregate(:count, :id)
我正在尝试查找属于特定用户的项目数量。
我知道您可以这样做来获取模型的计数:
count = User |> Repo.aggregate(:count, :id)
但是我如何找到属于该用户的项目数?
Projects
table 属于 users
table,因此它具有外键,因此您可以对 project.user_id == ^user_id
[ 所在的项目模型进行聚合计数=14=]
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
这是一种方法:获取用户,使用 assoc/2
为其关联创建查询,然后按照与现在相同的方式对其进行计数:
User |> Repo.get(123) |> assoc(:projects) |> Repo.aggregate(:count, :id)