查询 has_many 关联 - Ecto、Phoenix

Bit*_*ise 1 elixir ecto phoenix-framework

我正在尝试查询属于我的系统中特定用户的所有联赛。

数据设置如下所示:

用户模型:

has_many :users_leagues, Statcasters.UsersLeagues
has_many :leagues, through: [:users_leagues, :league]
Run Code Online (Sandbox Code Playgroud)

所以你可以看到,我有一个 has_many through 关联用户和联赛。

我正在尝试获取用户附加的所有联赛的列表。

在 Rails 中,它看起来像这样:user.leagues它将加载所有附加了当前用户 ID 的联赛。

我如何使用 Ecto、Elixir 和 Phoenix 做到这一点?

Dog*_*ert 5

您可以使用以下方式leaguesuser加载Repo.preload

user = user |> Repo.preload([:leagues])
# user.leagues is now a list of leagues
Run Code Online (Sandbox Code Playgroud)

或使用assocRepo.all获取用户的联赛列表:

leagues = Ecto.assoc(user, :leagues) |> Repo.all
Run Code Online (Sandbox Code Playgroud)