使用 Ecto 查询查找属于特定用户的联赛

Use an Ecto query to find what leagues belong to a particular user

我有 UserLeague 它们通过 has_many 到 users_leagues 相互关联。非常基本的设置。

但现在我正在尝试查询与特定用户有关联的联赛。因此,如果 User Aleague A 有关系但与 League B 没有关系,我只想在查询联赛时看到 League A

这是其中一个案例,Rails 似乎是一种更简单的方法。在 rails 中,这将是:@leagues = current_user.leagues ` 这是我目前的尝试:

    def my_leagues(conn, _params) do
      current_user_id = Coherence.current_user(conn).id
      query = from l in League,
      select: l

      leagues = query |> where([l], l.users == ^current_user_id) |> Repo.preload(:users)|> Repo.all 

      render(conn, "my_leagues.html", leagues: leagues)
    end

错误:

no match of right hand side value: #Ecto.Query<from l in Statcasters.League, where: l.users == ^1, select: l>

Ecto.Query.join/5 接受关联作为 join 值:

query = from l in League,
        left_join: u in assoc(l, :users),
        where: u.id == ^current_user_id.
        select: l