获取与 elixir 和 phoenix 的关联计数

Getting an association count with elixir and phoenix

我正在尝试查找我的应用程序中有多少支球队属于一个联盟。我似乎找不到这个问题的答案。这是我们的模型:

League.ex

defmodule Statcasters.League do
  use Ecto.Schema
  import Ecto
  import Ecto.Changeset
  import Ecto.Query

  schema "leagues" do
    field :name, :string
    has_many :teams, Statcasters.Teams.Team
    belongs_to :user, Statcasters.Coherence.User
end

Team.ex

defmodule Statcasters.Teams.Team do
  use Ecto.Schema
  import Ecto.Changeset
  alias Statcasters.Teams.Team

  schema "teams" do
    field :name, :string
    belongs_to :league, Statcasters.League
    belongs_to :user, Statcasters.Coherence.User

    timestamps()
  end
end

我正在尝试查找某个特定联赛有多少支球队。如果这是 Rails,我会这样做 League.first.teams.count。我如何使用 Elixir、Phoenix 和 Ecto 做到这一点?

我是 Ecto 新手,但这是我的第一次尝试,但没有成功。

  def league_limit(league) do
    count = from l in league,
      left_join: t in assoc(l, :teams),
      group_by: l.id,
      select: {l, count(t.id)}
  end

I'm trying to find how many teams a particular league has.

假设 league_limitleague 参数是一个加载的 %League{} 结构,添加一个 where: 子句以将其缩小到您传入的联赛:

 def league_limit(league) do
    count = 
      from l in League,
      where: l.id == ^league.id,
      left_join: t in assoc(l, :teams),
      group_by: l.id,
      select: {l, count(t.id)}
  end