查询has_many association - Ecto,Phoenix

时间:2017-12-09 04:38:23

标签: elixir phoenix-framework ecto

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

数据设置如下所示:

用户模型:

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

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

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

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

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

1 个答案:

答案 0 :(得分:4)

您可以使用userRepo.preload预加载到user = user |> Repo.preload([:leagues]) # user.leagues is now a list of leagues

assoc

或使用Repo.allleagues = Ecto.assoc(user, :leagues) |> Repo.all 获取用户的联赛列表:

select t.*, ca.num_visit
from table1 as t
cross apply (
  select count(*) num_visit
  from table1 as c
  where c.id = t.id
  and c.DATETIME > t.DATETIME
  and c.DATETIME <= dateadd(minute,5,t.DATETIME)
  ) ca
where num_visit >= 2