查询 has_many 个协会 - Ecto、Phoenix

Query has_many associations - Ecto, Phoenix

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

数据设置如下所示:

用户模型:

has_many :users_leagues, Statcasters.UsersLeagues
has_many :leagues, through: [:users_leagues, :league]

所以你可以看到,我有一个 has_many 通过用户和联盟的关联。

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

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

如何使用 Ecto、Elixir 和 Phoenix 执行此操作?

您可以使用 Repo.preload:

leagues 预加载到 user
user = user |> Repo.preload([:leagues])
# user.leagues is now a list of leagues

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

leagues = Ecto.assoc(user, :leagues) |> Repo.all