【问题标题】:Counting associated model rows with ecto使用 ecto 计算关联的模型行
【发布时间】:2018-05-10 13:30:06
【问题描述】:

我试图找出有多少项目属于特定用户。

我知道您可以这样做来获取模型的计数:

count = User |> Repo.aggregate(:count, :id)

但是我如何才能找到属于该用户的项目数?

【问题讨论】:

    标签: elixir phoenix-framework ecto


    【解决方案1】:

    这里有一种方法:获取用户,使用 assoc/2 为其关联创建查询,然后按照您现在的方式计算它:

    User |> Repo.get(123) |> assoc(:projects) |> Repo.aggregate(:count, :id)
    

    【讨论】:

    • 那是Ecto.assoc/2,以防万一。
    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-10
      • 2017-10-21
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多