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 做到这一点?
您可以使用以下方式leagues预user加载Repo.preload:
user = user |> Repo.preload([:leagues])
# user.leagues is now a list of leagues
Run Code Online (Sandbox Code Playgroud)
或使用assoc和Repo.all获取用户的联赛列表:
leagues = Ecto.assoc(user, :leagues) |> Repo.all
Run Code Online (Sandbox Code Playgroud)